如何处理构建REST API的这种情况?

时间:2014-01-30 06:58:33

标签: rest backbone.js marionette

我遇到了这个问题,我已经建立了一个休息api,我不知道如何处理这个问题: 当javascript客户端(Marionette.js)负责制作视图时,我没有问题,因为众所周知,它只是请求一个url(例如example.com/user/37),服务器检索一个json与{id:'37',名称:'Peter',年龄:'24'}(有一个名为User的控制器类),Marionette在视图中显示该数据。但是,如果用户通过浏览器进入example.com/user/37,它将只显示{id:'37',名称:'Peter',年龄:'24'},而不显示任何视图。如果我想在两种情况下都看到相同的视图,我该怎么办?

2 个答案:

答案 0 :(得分:1)

如果您尝试从同一端点提供HTML或JSON,那么您的服务器应该根据请求的Accept标头做出决定。如果请求的Accept标头是application/json,那么您的服务器应该只返回JSON,或者返回HTML。

您可以看到SoundCloud uses the same technique用于从API返回XML或JSON:

  

默认情况下,资源以XML格式返回,如果将.json扩展名附加到资源URI,则返回JSON。我们鼓励您使用JSON。您还可以发送适当的Accept标头,指定您希望的格式。例如,带有标头Accept: application/json的请求将返回表示为JSON文档的资源。

答案 1 :(得分:0)

你想做的事情实际上是不可能的。

为什么?

当您第一次输入网址example.com时,服务器会响应组成您的应用程序的所有工件(html,js,css ...),浏览器会显示它。

现在,当您输入ther url example.com/user/37时,服务器只发送没有任何html,js或css的JSON数据,因此浏览器会显示他收到的原始数据。

您要做的是强制服务器根据用户请求提供两个响应(JSON或html / js / css)。

你可以做到,但它会如此复杂,以至于不值得努力。