我们有一个电子商务网站,它使用一种 URL 格式按类别显示产品组,该 URL 格式几乎完全映射到我们希望用于即将推出的 API 的 REST URL 格式。
例如example.com/products/latest
或 example.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/