html - 关于使用HTTP请求头在网站(HTML)和API(JSON)之间切换的意见

标签 html json api http

我们有一个电子商务网站,它使用一种 URL 格式按类别显示产品组,该 URL 格式几乎完全映射到我们希望用于即将推出的 API 的 REST URL 格式。

例如example.com/products/latestexample.com/products/hats

对可见 (HTML) 和不可见 (JSON) 结果使用相同的 URL,并使用 Accept http 请求 header 来确定应返回的内容是否是一种有效模式。

即如果您使用 Accept: application/json 调用 example.com/products/latest,您只会得到产品数据,但如果您使用 text/html,您会得到完整的 HTML 页面(页眉、页脚、网站镶边等)

如果是这样,这是个好主意吗?例如,如果网站需要更改,但 API 需要稳定,我们会遇到问题吗?

更新:一些有用的资源 - 这是一篇 Peter Williams 的文章[1],讨论了将 HTTP Accept header 用于版本 API,我还引用了一个 SO 问题[2]揭示了使用这种方法的一些问题。使用自定义 HTTP header 可能更好?

[1] 使用 Accept 的理由:http://barelyenough.org/blog/2008/05/versioning-rest-web-services/
[2] jQuery(和 IE)问题:Cannot properly set the Accept HTTP header with jQuery
[3] 证明使用 Accept:http://blog.steveklabnik.com/2011/07/03/nobody-understands-rest-or-http.html
[4] 坐在篱笆上:http://www.informit.com/articles/article.aspx?p=1566460

最佳答案

使用 http header 通常已成为公认的确定方式。

例如在 ASP.NET MVC 中有一个 IsAjaxRequest检查 X-Requested-With header 的方法,如果它等于 "XMLHttpRequest",则认为它是一个 ajax 请求。

关于html - 关于使用HTTP请求头在网站(HTML)和API(JSON)之间切换的意见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260707/

相关文章:

javascript - 使用 JQuery 更改 iframe 上的图像

javascript - 无法通过ajax发送json数据

javascript - 通过jQuery动态生成Drop Down列表的内容

Javascript 客户端身份验证(使用 SSL,不使用 OAuth2)?

javascript - 如果父元素有边框,当鼠标同时退出父元素和子元素时,如何避免父元素的鼠标悬停事件

html - 具有图像的输入类型文件的CSS样式

jquery - 如何使用 jquery 大于当前导航的选择器

php - 如何在 Codeigniter 中正确格式化 JSON 字符串?

rest - Magento 2 Rest Api - 请求参数中的关联数组

node.js - 护照验证功能在 Node api 中不起作用