web-dev-qa-db-ja.com

REST APIはブール値をどのように受け入れる必要がありますか?

資源 123には現在の構成状態とデフォルトの構成状態があり、これらの構成状態は両方ともJSONで表すことができます。

GETリクエストhttp://example.com/123/configは現在の構成状態を返し、GETリクエストはhttp://example.com/123/config?reset=trueは、デフォルトの構成状態を返します。

APIはブール値をどのように解釈すべきですか?例えば:

  • http://example.com/123/config?reset=true
  • http://example.com/123/config?reset=blablabla
  • http://example.com/123/config?reset=false
  • http://example.com/123/config?reset=1
  • http://example.com/123/config?reset=0
  • http://example.com/123/config?reset=
  • http://example.com/123/config?reset
10
user1032531

どちらにせよ、それは完全に建築家/デザイナーとしてのあなた次第です。 true/falseは最も構文的に正しいバージョンです。1つが機能することを確認し、必要に応じて他のオプションを砂糖として追加してください。

9
rorschach

真と偽

trueおよびfalseリテラルは、ブール値を表すのに十分です。これらは非常に説明的であり、APIがJSONをサポートしている場合、truefalseは明らかに明白な選択肢です。

列挙

ただし、一部の状況では、ブール値を展開できないため、ブール値を使用したくない場合があります。代わりにenumerationsを検討することをお勧めします。

これは不十分な比較かもしれませんが、このアプローチの主な考え方を理解するのに役立つ可能性があります。 overflowvisibility などのCSSプロパティを確認してください。これらは、trueまたはfalseだけではなく、拡張可能な値を許可します。したがって、プロパティ名を変更せずに新しい値を簡単に追加できます。

したがって、質問で説明されている状況では、リソースのデフォルトの状態を取得するために、statusdefaultなどの値を持つ可能性があるcurrentなどのクエリパラメータをサポートします。

以下は、リソースのdefault状態を返します。

GET /config?status=default HTTP/1.1
Host: example.com
Accept: application/json

そして、以下はリソースのcurrent状態を返します:

GET /config?status=current HTTP/1.1
Host: example.com
Accept: application/json

クエリパラメータが指定されていない場合、クライアントがリソースのcurrent状態を必要としている可能性があります。


リソースの状態をdefault状態に戻す必要がある場合は、PUTを使用して、リソースの新しい表現をリクエストペイロードで送信することを検討してください。何かのようなもの:

PUT /config/status HTTP/1.1
Host: example.com
Content-Type: application/json

{ 
  "value": "default" 
}
9
cassiomolin