prmd と jdoc で JSON Schema の解釈が微妙に違う問題
要するに JSON Schema を解釈して何かするライブラリによって方言が存在する状態になっている。
jdoc
は 204
を表現できるけど、prmd
は 202
となっている他、
status code の表現に使う場所が
def has_response_body? @raw_link.media_type != "null" end # @return [Fixnum] Preferred respone status code for this endpoint def response_status case when method == "POST" 201 when has_response_body? 200 else 204 end end
HTTP/1.1 <%= case link['rel'] when 'create' '201 Created' when 'empty' '202 Accepted' else '200 OK' end %>
みたいな状態。
jdoc
は media_type
属性に null
を指定すれば 204
だし、
prmd
は rel
属性に empty
を指定すれば 202
・・・
prmd
のほうでは 202
の代わりに 204
にしないの?みたいな話が上がってたり
- empty should probably be 204 instead of 202 · Issue #208 · interagent/prmd
- issues with rel=empty · Issue #169 · interagent/prmd
結局 JSON Schema の仕様が完璧じゃないから、実装によってその辺りがブレるんじゃねっていう状態なのかも・・
とりあえず、利用者も多そうだし、Heroku がメンテしているということで、prmd
に寄せていくことにする。