2011-10-31 3 views
9

は、私が 体内でRESTfulなAPI POST/DELETEが返される必要はありますか?

  • DELETE /人/ボブは/従う

    • POST /人/ボブ/に従う必要があり従うとRESTful APIを介して人をアンフォローするには

    何べきでこれらのリターン体?

  • ナッシング:

    1. あなたは
    2. に従っみんなのコレクションあなただけ続く人は/
    3. { "OK" 状態}のような状況をフォローを解除しました。
  • 答えて

    5

    すべては、お客様のアプリケーション/ APIの設計と、クライアント/発信者で定義する契約によって異なります。しかし、一般的に、すべてのケースでステータスコードを返して、クライアントに結果を知らせる必要があります。

    同様:POSTについてはrespond(ResponseCode::OK, ...)

    :私はDELETEのために彼の信者のすべて+ステータスコード
    を含む「ボブ」オブジェクトを返したい:私は、ステータスコードを返すと思います。

    +1

    ボブの次はすべて何千ものものになることがあります。それは理想的ではありません。 –

    +1

    あなたはそうだから、私はそれがアプリのデザインに依存していると言いました。しかし、mvcフレームワーク(rails、asp.net mvc ...)を使用していると仮定します。PersonControllerアクションを呼び出すと、クライアントは同じタイプ(Person)のオブジェクトを受け取ることを期待しています。タイプ。 – yek

    6

    HTTPサーバーステータスを使用してエラーが発生した場合、ステータスコードには何も表示されません。ユーザーBobがいない場合は404 Not Found、データベースが壊れている場合は500 Internal Server Errorと応答すると、これまでに成功した応答はOKになります。ユーザーはステータスコードを確認する必要はなく、HTTPステータスコードを確認するだけで済みます。

    何も返されないことをお勧めします。正常な応答(つまり、200 OKまたは204 No Content)は、操作が成功したことを示します。

    3

    一般的に、APIについては、コードステータスが常に「OK」ではなく「HTTP」ステータスコードを使用することを謝罪しています。 これは、回答の既存の基準に従うことができることを意味します。エラーコードを取得した人は、何が起こったか/彼らがしなければならないことを大まかに知ります。 wikiの記事http status codesを参考にしてください。

    また、エラーコードとともに、私たちが話しているAPIであるため、エラーについてよりわかりやすいメッセージを表示すると便利です。エラーのような意味があります。「認証トークンがありません」など、何らかの基準があります。

    リソースの作成に関しては、201(Created)と作成したばかりのリソースで回答するのが一般的です。リソースからいくつかの属性を除外することができます(例えば、ユーザーを作成しているときに、暗号化されたパスワードなどの機密情報を返さないでください)。

    リソースの削除に関しては、 200(OK)または202(Accepted)、追加情報なし。

    それでも、@ yekは、APIコンシューマーへのコミットメントに大きく依存しています。最も重要なことは、APIを適切に文書化し、何が期待どおりであるべきかを説明することです。

    関連する問題