web-dev-qa-db-ja.com

RESTfulリソースが見つかりません。 404または204?ハンドラーからnullが返されると、ジャージーは204を返します

/Resource/Idを探していて、そのリソースが存在しない場合は、404が適切な応答であると常に思っていました。しかし、ジャージーハンドラーからnullを返すと、「204 No Content」が返されます。私はどちらかで作業することができますが、これに関する他の考えに興味があります。

自分の次の質問に答えるにはジャージーに404を返させるには、例外をスローする必要があります。

    if (a == null)
        throw new WebApplicationException(404);
40
jr.

HTTPコード定義 は、2で始まるコードが成功したコール用であり、4が失敗したコール用であることを示しています。

  • 204を取得すると、何も返されないことが示されます(通常、POSTまたは何も返す必要のないPUT呼び出しを行った場合)

  • 404を取得すると、呼び出しが失敗したことを示すため、何も返されません。

あなたの状況では、204ではなく404が適切です!あなたはおそらく彼が間違った電話をしたことを発信者に伝えたいので。

50
Diego Dias