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

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

例如example.com/products/latest或example.com/products/hats

对可见(HTML)和不可见(JSON)结果使用相同的URL是否有效,并使用Accept http请求标头来确定应返回的内容.

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

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

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

[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标头通常成为确定这一点的可接受方式.

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

点赞