3 ms·
I guess in a pedantic sense, all possible paths “exist.”
by kweingar 4y ago
I guess in a pedantic sense, all possible paths “exist.”
- treis 4y agoNo, paths that reach a server and get processed exist.
- that_james 4y agoThat's a succinct definition, happy to admit that's a better argument than mine
- quesera 4y agoDefine "processed"? A request with a path that reaches a server, is looked up in the routing table or filesystem, resulting in no resources found, is expected to return "404 Not Found". You can say the path "exists", but only as a label. All labels can exist. Only a subset of these are semantically valid resource locator paths, and only a further subset reference objects that exist. Colloquially, https://news.ycombinator.com/this/path/does/not/exist https://news.ycombinator.com/this/path/does/not/exist (path "/this/path/does/not/exist") "does not exist" because we're talking about the requested resource. Of course the path exists, I just wrote it and it's semantically valid. That's not an interesting question though, and if API responses were this shallow -- just a "semantic correctness checker" -- then response codes would be useless.
- treis 4y ago>Define "processed"? Why? We all know what it means. >Colloquially, https://news.ycombinator.com/this/path/does/not/exist https://news.ycombinator.com/this/path/does/not/exist (path "/this/path/does/not/exist") "does not exist" because we're talking about the requested resource. That path is 404 - Not found and returns "Unknown" https://news.ycombinator.com/item?id=52081900 https://news.ycombinator.com/item?id=52081900 Returns 200 - No such item. In 10 years when we have that many threads it will return content. As I've said in several other places it depends what you want to tell the client. 404 if you want to tell them you didn't find the resource. 200 if you want to tell them the resource doesn't exist.
- quesera 4y agoI did not mean to hold up HN as a measure of correctness, and I suggest that it is not a good idea to do so. > 404 if you want to tell them you didn't find the resource. 200 if you want to tell them the resource doesn't exist. 404 is a client error, like all 4xx codes. The requester can correct their request. It does not indicate that the server ~"tried to find but may have overlooked" a resource, it means that the server can authoritatively state that the resource is not findable. This is essentially, "does not exist at this time". Resources that do not exist today, might exist in the future, or they might not. This is true for both /users/1000 and /some/other/path. I interpret the RFC to support my belief: 6.5.4. 404 Not Found The 404 (Not Found) status code indicates that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. A 404 status code does not indicate whether this lack of representation is temporary or permanent; the 410 (Gone) status code is preferred over 404 if the origin server knows, presumably through some configurable means, that the condition is likely to be permanent.
- treis 4y ago>I interpret the RFC to support my belief: Impressive given that it explicitly contradicts your point: >the server can authoritatively state that the resource is not findable >origin server did not find a current representation Those two are not the same thing.
- quesera 4y agoIt does not contradict my point at all. Those two phrases do not lexically parse in identical ways, but we should not interpret the RFC to be saying the alternative of "I really tried, but boy filesystems are hard and maybe the NFS mount disappeared, and well shucks, couldn't find it! 404!".
- treis 4y agoWe should interpret the RFC as written which is that this particular server could not find the resource. That does not mean the resource is not findable by this server at a different path or by a different server at a different host.
- wizofaus 4y agoWhat does "get processed" mean? Plenty of web server frameworks allow generic handlers or middle ware that can handle any path passed to them.