我得到了这个问题,我已经建立了一个休息API,我不知道如何处理这个问题: 当javascript客户端(Marionette.js)负责制作视图时,我没有问题,因为它是众所周知的,它只是请求一个url(例如example.com/user/37),服务器用{id:'37',name:'Peter',age:'24'}检索一个json一个名为User的控制器类)和Marionette在视图中显示数据。但是,如果用户通过浏览器进入example.com/user/37,它将仅显示{id:'37',名称:'Peter',年龄:'24'},而没有任何视图。如果我想在两种情况下看到相同的视图,我该怎么办?如何处理构建REST API的这种情况?
0
A
回答
0
你试图做的是实际上不可能的。
为什么?
当你第一次输入url example.com
它是服务器响应组成你的应用程序的所有工件(html,js,css ...)并且浏览器显示它。
现在,当您输入其他网址example.com/user/37
时,服务器仅发送没有任何html,js或css的JSON数据,因此浏览器会显示他收到的原始数据。
你要做的是强制服务器根据用户请求给出两个响应(JSON或html/js/css)。
你可以做到这一点,但它会非常复杂,不值得我们付出努力。
1
如果您尝试从同一端点提供HTML或JSON,则服务器应根据请求的标头Accept
做出该决定。如果请求的Accept
标头为application/json
那么您的服务器应该只返回JSON而不返回HTML。
你可以看到,SoundCloud uses the same technique从他们的API返回的XML或JSON:
资源是默认返回XML,或JSON如果以.json扩展名追加到资源的URI。我们鼓励您使用JSON。您也可以发送适当的
Accept
标题,指定您想要的格式。例如,标题为Accept: application/json
的请求将返回以JSON文档表示的资源。
相关问题
- 1. 如何处理unarchiver与这种情况..?
- 2. 如何处理这种情况?
- 3. ,如何处理这种情况?
- 4. 如何处理这种复制情况?
- 5. REST如何处理这种互动?
- 6. 如何处理这种情况在面向对象的perl
- 7. JPA:如何处理ManyToMany的这种情况
- 8. 如何处理这种路由的情况是Rails
- 9. 如何在这种情况下处理黑莓的Focuschangelistener?
- 10. 如何在这种情况下处理并发?
- 11. jquery冲突如何处理这种情况?
- 12. 如何在这种特殊情况下处理多个设备?
- 13. 如何在这种情况下处理代码重用?
- 14. 如何在mvc c#中处理这种情况?
- 15. 如何在这种情况下处理sql事务?
- 16. 如何用NHibernate + asp.net mvc处理这种并发情况?
- 17. 我如何处理这种情况在mysql中搜索记录?
- 18. 如何在这种情况下处理ListView Android?
- 19. 如何在这种情况下处理NullpointerException
- 20. 如何在Nginx中处理这种情况?
- 21. 如何在这种情况下处理ConcurrentModificationException
- 22. 在这种情况下文件处理如何工作?
- 23. 在这种情况下如何处理质量分配
- 24. 在这种情况下,应如何处理rails ajax响应?
- 25. 在这种情况下如何处理复选框?
- 26. 如何在django admin中处理这种特殊情况?
- 27. SVN(乌龟) - 如何处理这种情况?
- 28. 如何在Perl中处理这种情况
- 29. 在这种情况下如何处理SIGCHILD信号?
- 30. 如何扩展/架构ASP.NET MVC 3授权属性来处理这种情况
它不应该是其他api的责任来执行任何特定类型的客户端。你的基于木偶的应用程序只是一个客户端。 –