5 ms·
Hacker News API doesn't obey RFC 4627
Normally, I would post this on the github issue tracker, but it does not exist. See https://github.com/HackerNews/API.
The API returns "null" when an "Item" doesn't exist.
Example: https://hacker-news.firebaseio.com/v0/item/1607092358902384905.json?print=pretty
RFC 4627 specifies that the returned JSON must be either an object or an array. This is neither. Please help. Thank you.
Suggestion:
Instead of "null", can you make it"{ \"item\" : null }" ?
Warmest Regards
- zellio 12y agoIsn't null an object?
- dmjio 12y agoThe RFC says all JSON text must be an array or object, null is a value. JSON text is made up of JSON values. per the RFC, "JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays)." "An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array."
- namecast 12y agoHrmm. Later on it is explained: 2.1. Values A JSON value MUST be an object, array, number, or string, or one of the following three literal names: false null true ... so what you're receiving is technically a valid JSON value according to the RFC, no? (I am so sorry for being this pedantic - but that RFC is marked 'informational', it's not actually a standard so much as a suggestion, and even worse, RFC 7159 obsoletes it and is an IETF standards track document - check out http://tools.ietf.org/html/rfc7159 http://tools.ietf.org/html/rfc7159. The ambiguity is definitely removed in the updated version.)
- MalcolmDiggs 12y agoIf I'm reading it correctly: "null" would be a valid value, but a key/name would still need to be specified. So a blank document with the word "null" on it is invalid because the value of null has no key... but again, I may be reading it wrong.
- sarciszewski 12y ago{"key": null} vs null I'm pretty sure they're both valid.
- deleted 12y ago[deleted]
- deleted 12y ago[deleted]
- MalcolmDiggs 12y agoI'm more surprised that they're returning a 200 when an item doesn't exist. If they'd just return a 404, per usual, the content of the body wouldn't really matter. (in my opinion)
- dmjio 12y agoyea... that's another issue to add
- davismwfl 12y agoI would argue a 404 is not proper in this case and a 200 is more correct and valid. The URI exists, the requested record/document does not, hence the successful response with no return.
- MalcolmDiggs 12y agoThat's an interesting way to look at it. I can definitely see your point, thank you.
- kogir 12y agoThe API returns JSON values per RFC 4627 and RFC 7159. null is a valid value. This allows clients to request only what they want: Entire item: https://hacker-news.firebaseio.com/v0/item/8422599.json https://hacker-news.firebaseio.com/v0/item/8422599.json Just one property: https://hacker-news.firebaseio.com/v0/item/8422599/kids.json https://hacker-news.firebaseio.com/v0/item/8422599/kids.json Also, please send API correspondence to api@ycombinator.com.