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