如何在构建RESTAPI时处理这种情况?

如何在构建RESTAPI时处理这种情况?,rest,backbone.js,marionette,Rest,Backbone.js,Marionette,我遇到了这个问题,我构建了一个rest api,我不知道如何处理这个问题: 当javascript客户机(Marionette.js)负责创建视图时,我没有问题,因为众所周知,它只请求一个url(例如example.com/user/37),服务器检索一个json,其中包含{id:'37',name:'Peter',age:'24}(有一个名为user的控制器类),并且marionete在视图中显示该数据。但是如果用户通过浏览器进入example.com/user/37,它将只显示{id:'37

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

您试图做的实际上是不可能的

为什么?

当您第一次输入url
example.com
时,服务器会响应组成应用程序的所有构件(html、js、css…),浏览器会显示这些构件

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


您试图做的是强制服务器根据用户请求给出两个响应(JSON或html/js/css)


您可以这样做,但它太复杂了,不值得付出努力。

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

您可以看到,从API返回XML或JSON时:

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


强制执行任何特定类型的客户端不应该是RESTAPI的责任。基于木偶的应用程序只是一个客户端。