TL;TR: Is (first) question mark in URL part of query or is is just a separator followed by query?
The RFC 1738, section 3.3, suggests that the "?" (question mark) is not part of the query string, but just separates it from the path:
http://<host>:<port>/<path>?<searchpart>
Grammar presented in the RFC 3986, Appendix A., also indicate the "?" is not part of the actual query string:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
Now, let's consider two URLs:
http://server.com/api/item.json
http://server.com/api/item.json?
Are they equivalent or distinct?
Is it valid to distinguish them and use to identify two different resources?
tl;dr:
?
is not part of the query component.The URI standard (STD 66) is currently RFC 3986.
Section 6.2. Comparison Ladder describes methods how to test if URIs are possibly equivalent.
In 6.2.3. Scheme-Based Normalization it says:
Where "examples above" refers to:
(These 4 URIs are equivalent.)
So
http://example.com/api/item.json
has no query component, whilehttp://example.com/api/item.json?
has an empty query component.