2016-09-30 8 views
1

fieldsが設定されていない場合、すべての可能な車フィールドが返されます。配列がfieldsの場合、それらのフィールドだけを返します。たとえば、次のクエリ:要求されたフィールドが存在しない場合の適切なREST応答

はすべての車のリストを返します[{"name":"Ford", "color":"blue", "cost":10000},...]

今、別のリクエストですが、今回は車の馬力も含まれています。

curl -X GET 'http://example.com/api/cars?fields=name&fields=color&fields=cost&fields=hp' 

しかし、馬力はアプリケーションによってサポートされていません。どうすればいいですか:

  • 返品のみ可能ですか?すなわち[{"name":"Ford", "color":"blue", "cost":10000},...]
  • 復帰要求されたすべてのフィールドが、サポートされていないフィールドのnullを含んは結果を返しますが、エラーを返さないのですか?[{"name":"Ford", "color":"blue", "cost":10000, "hp":null},...]
  • 、すなわち
  • 他に何かしますか?

答えて

1

あなたが本当にクライアントが何をしたいのかわからないので、私は、そのよう{"error":"Unknown field: 'horsepower'"}などのエラーJSONオブジェクトと一緒にHTTPエラーコード400 Bad requestを返すと思います。おそらく彼らは存在しないフィールドを要求しているのかもしれないし、フィールドの1つでスペルミスをしているかもしれません。

エラーを静かに無視すると、クライアントがそれを検出するのが難しくなります。エラーを返すだけでクライアントがそれに対処できるようにしてください。

+0

ありがとうthis.lau_。私は前後に行っていたし、理由を説明した簡単な答えを感謝しています。 – user1032531

0

上記のケースを扱うための厳しいガイドラインはありません。それはあなたの要求に依存します。 A)あなたはのparamsの厳密なチェックをしたい場合は、のparamsの厳密なチェックはその後、ほとんどの場合に起こる馬力フィールドせずに戻りたくないなら、あなたは)または

B 400不正な要求を送信することができます。

C)ユーザーは不要なフィールドをNULLとして送信しないでください。ユーザーは不要なデータを送信できるため、処理時間が長くなります。リソースを識別する

0
http://example.com/api/cars?fields=name&fields=color&fields=cost&fields=hp 

....

しかし、馬力は、アプリケーションでサポートされていません。

つまり、現時点ではhttp://example.com/api/cars?fields=name&fields=color&fields=cost&fields=hpという表現はありません。

エルゴ:404 Not Found

404(見つかりません)ステータスコードはオリジンサーバがターゲットリソースの現在の表現が見つからなかったことを示しているかが存在することを開示して喜んではありません。

元のサーバーが提供されたURIを受け取り、それをハンドラにマップしたという事実は密接なものではありません。あなたはステータスコードの暗い

の4xx(クライアントエラー)クラス内のクライアントを残しておく必要がありません

注は、クライアントが誤りを犯しているように見えることを示しています。 HEADリクエストに応答する場合を除いて、サーバは、エラー状況の説明と、それが一時的なものか永久的なものかを示す表現を送るべきである(SHOULD)。

は、この場合、表現がサポートされていない hp、ようにあなたがクライアントにそれに投票する機会を提供したい場合は、関連する追跡問題へのリンクを提供し、ことを説明できます。

+0

ありがとうございました。私はそれを熟考させてください。私は、「?fields = name&fields = color&fields = cost&fields = hp」を '?fields =] = name&fields [] = color&fields [] = cost&fields [] = hp'に変更すべきだと思っています。 – user1032531

関連する問題