2012-01-21 20 views
3

現在、RESTful APIを使用してタスクキューを開発しています。不十分なRESTリクエストのHTTPステータスコードを修正します

作業を処理するには、作業者がリースを作成する必要があります。

PUT .../leases 

タスクキューは、タスクが使用可能にされている場合、これはリースが作成され、サーバーがステータス201で応答し、成功します。

タスクが利用できない場合、このケースをどのように処理するかはわかりません。タスクが利用できない場合、リースを作成することはできません。どのHTTPステータスコードがこのケースに適していますか?

  • 204 No Content - クライアントは何も間違っていませんが、データはありません。

  • 400 Bad Request - これは、それは「要求がサーバによって理解することができませんでした」という意味として、適用できない私見である私は、このアプローチではないかもしれないと思った一方場合

されていません理想的である。ブライアンの推奨として503を使用するか、REST in practiceの代名詞を使用するか、プロセス全体を変更します。

私は暫定的に作成できるリースを考えていました。これは、リースを作成するタスクを割り当てると201で応答または仮リースを作成し、いくつかの時間のために滞在する202

  • 暫定リースで応答/leases
  • のいずれかに

    1. PUTを意味します。タスクが利用可能になると、仮リースに割り当てられます。特定の期間のためのタスクがない場合は、リースが削除されると、サーバーは、リソースがサーバによって制御されるため、クライアントは、その後1
  • 答えて

    3

    で再起動する必要があります410

  • で応答し、クライアントが結果に影響を及ぼすことができるものは何もありません.500種類のコードが最適です。

    503 - Service Unavailable私に当てはまる音。これは、要求のニーズを満たすのに十分なリソースがサーバーにないことを意味します。利用可能なリース/タスクがないために応答が失敗したことを明示的に明らかにするために、応答の本文に意味のあるエラーを返すべきでしょうが、将来はそうでないかもしれません。

  • 1

    404 - Not Foundを使用することができました。 Wikipediaは次のように要約しています:

    要求されたリソースは見つかりませんでしたが、今後再度利用可能になる可能性があります。クライアントによる後続の要求は許可されます。

    +0

    私は伝えるという概念が嫌いです、リソースは存在しないので、存在しません。多分私のアプローチは間違っています。 – ccellar

    +0

    これを見る方法の1つは、存在しないブログ上のページを404で表示しようとする場合です。作成されたページが作成された場合、それはもはや404ではありません。それはまだ正確ではありません私はそれらのいずれかだとは思わない。 – abraham

    1

    404はほとんど動作しますが、私はそれをあなたが扱っているリソースとみなし、リソースを作成するためにPUTを行っています。もちろんそれが存在しないので、それを作成しているのです。

    狭義の定義で、400 Bad Requestに関する最初の考えに同意します。しかし、あなたが要求に間違っているものを含めるように定義を広げれば、それはあなたの状況に合っていて、それだけでそれが受け入れられると思います。たとえば、リクエストが、予想していたスキーマを満たしていない場合、およびリソースに検証エラーがある場合は、400を返します。サービスの場合、これが悪い要求であると判断できる場合は、400を送り返します。

    ご利用のサービスでは、タスクが利用できない場合にリースを作成すると不正なリクエストとなり、問題の内容を説明します。私は、400はあなたがそれを保持しているより広い定義のために意図されたと思う。

    私は500の仕事がより扱いにくいものであるとは思わないが、これはあなたが対処して情報の回答を提供できるケースです。

    これが役に立ちます。

    0

    サポートされていない方法(GETが必要な場合はPUT)を使用しようとすると、IISは405メソッドを許可しません。エンドポイントがまったく存在しない場合は、404 Not Foundを送信します。

    関連する問題