我时不时地听到一种观点,认为非 Ajax 和 Ajax 操作使用相同的 URL 是不好的。
在我的应用程序中,我使用 Ajax 发送表单以获得更好的用户体验。对于禁用 JavaScript 的人,我的表单也可以工作。我的一些链接也是如此。我曾经对两者使用相同的 URL,并且根据是否是 Ajax 调用而使用适当的内容和 Content-Type 。这导致 Google Chrome 出现问题:Laravel 5 and weird bug: curly braces on back
我现在的问题是 - 对于 Ajax 和非 Ajax 操作使用相同的 URL 真的是个坏主意吗?为每个操作创建两个单独的 URL 是很痛苦的。或者也许有一个好的解决方法来管理缓存?从理论上讲,一个 header 可以完全改变行为,所以我不明白为什么我应该为我的应用程序创建额外的层并强制同一事物具有单独的 URL。
请分享您的意见。
最佳答案
HTTP 非常灵活,允许您按照自己想要的方式设计资源。您设计 API,设计取决于个人喜好。但在这种情况下,拥有一种可以响应不同类型请求的资源绝对没问题。这就是像 Content-type
这样的 HTTP header 存在的原因。
对于缓存,您可以使用 HTTP Etag header 。它是一个缓存 header ,强制客户端在使用缓存资源之前验证它们。
The ETag or entity tag is part of HTTP, the protocol for the World Wide Web. It is one of several mechanisms that HTTP provides for web cache validation, which allows a client to make conditional requests. This allows caches to be more efficient, and saves bandwidth, as a web server does not need to send a full response if the content has not changed
关于javascript - Ajax 操作真的应该有单独的 URL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38648650/