小编joh*_*nrl的帖子

RESTful网站与RESTful API - 有什么区别,这有关系吗?

我一直在阅读很多关于REST的内容,以及如何以"正确的方式"做REST.大多数资源使用RESTful Web服务或RESTful API等术语,但没有提到RESTful网站.鉴于我认为网站和API是两回事,我对此感到困惑.然而,例如,当使用Rails框架设计网站时,您会不断被提醒有关RESTful一切是(或应该是)的.

我认为REST为API提供了许多优势(它的架构属性)(例如JSON API),但我只是看不到网站如何从RESTful中获益.作为一个简单的例子考虑登录功能.在REST方式中,可以通过创建一个会话模型来建模,该模型对应于创建新的sesssion,注销破坏会话等等.URL看起来像这样:

Prefix Verb   URI Pattern                    Controller#Action
    new_user_session GET    /users/login(.:format)         sessions#new
        user_session POST   /users/login(.:format)         sessions#create
destroy_user_session DELETE /users/sign_out(.:format)      sessions#destroy
Run Code Online (Sandbox Code Playgroud)

但是,这些URL不是非常用户友好.从用户的角度来看,只有一个显示登录表单的/ login路径更有意义.它也更容易记住.但是,如果我们将URL映射为那样,那么它们就不再那么真实了./ login是否识别资源.如果是这样的话?

另一个例子是主页/家庭或只是/.这如何适合REST?在大多数网站上,主页是许多不同类型信息的混搭,并不识别任何单一资源.例如,它可能是一个页面,列出目录中的最新产品以及您登录的最后日期; 两个完全不相关的东西.RESTful怎么样?

我理解为什么将RESTful API与网站分开是有道理的,但我的困惑在于REST如何应用于网站 - 如果它确实如此.

api rest ruby-on-rails web

13
推荐指数
1
解决办法
2265
查看次数

Model-View-Presenter被动视图:bootstraping - 谁最初显示视图?

在Passive View Model View Presenter模式中,谁负责显示视图?我找到了其他MVP版本的相关答案,但它们似乎不适用于被动视图版本.

我有一个使用Java Swing的具体示例.它非常简单,但基本上我们有一个SwingCustomersView内部构建带有表(客户列表)的JPanel和一个显示当前所选客户年龄的标签.在表格中选择客户后,演示者将从模型中检索选定的客户年龄.我认为这个例子是MVP被动视图的正确实现,但如果我错了,请纠正我.

问题是我们如何引导这些类?例如,如果我们想要SwingCustomersView在JFrame中显示.如何做到这一点?我想象的是:

void launcher() {
    CustomersModel model = new CustomersModel();
    SwingCustomersView view = new SwingCustomersView();
    CustomersPresenter presenter = new CustomersPresenter(view, model);
}
Run Code Online (Sandbox Code Playgroud)

这是初始接线,但尚未显示任何内容.我们如何实际显示视图?(1)launcher(),(2)SwingCustomersView或(3)是否有责任CustomersPresenter显示视图?不幸的是,我不相信这些都是非常好的,你可以从下面的想法中看到.也许还有另一种方式?

(1.a):发射器

制作SwingCustomersView扩展JFrame,并将其内部JPanel添加到自身的内容窗格中.然后我们可以这样做:

void launcher() {
    CustomersModel model = new CustomersModel();
    SwingCustomersView view = new SwingCustomersView();
    CustomersPresenter presenter = new CustomersPresenter(view, model);
    view.setVisible(true); // Displays the view
}
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,我们不会将presenter实例用于任何事情.这不奇怪吗?它只是用于布线,我们也可以删除变量而只是做new CustomersPresenter(view, model).

(2):SwingCustomersView

请SwingCustomersView拿一个Container …

java mvp swing

5
推荐指数
1
解决办法
2321
查看次数

标签 统计

api ×1

java ×1

mvp ×1

rest ×1

ruby-on-rails ×1

swing ×1

web ×1