Ajax操作真的应该有单独的URL吗


Should Ajax actions REALLY have separate URL?

我不时听到一种观点,认为对非Ajax和Ajax操作使用相同的URL是不好的。

在我的应用程序上,我使用Ajax发送表单,以获得更好的用户体验。对于禁用JavaScript的人来说,我的表单也可以工作。我的一些链接也是如此。我过去对两者都有相同的URL,只使用适当的内容和Content-Type,这取决于它是否是Ajax调用。这导致了谷歌Chrome的问题:Laravel 5和奇怪的错误:背面的花括号

我现在的问题是,对Ajax和非Ajax操作使用相同的URL真的是个坏主意吗?为每个操作创建两个单独的URL是很痛苦的。或者可能有一个很好的解决方案来管理缓存?理论上,一个标头可以完全改变行为,所以我不明白为什么要在我的应用程序中创建额外的层,并强制相同的东西有单独的URL。

请分享你的意见。

HTTP是灵活的,允许您以所需的方式设计资源。您设计API,根据个人喜好进行设计。但在这种情况下,拥有一个资源来响应不同类型的请求是完全可以的。这就是像Content-type这样的HTTP头存在的原因。

对于缓存,您可以使用HTTP-Etag标头。它是一个缓存头,强制客户端在使用缓存资源之前验证

ETag或实体标记是万维网协议HTTP的一部分。它是HTTP为web缓存验证提供的几种机制之一,允许客户端发出有条件的请求。这使得缓存更加高效,并节省了带宽,因为如果内容没有改变,则web服务器不需要发送完整的响应