トーナメントとスケジュールのためのシンプルなRESTfulサービスを開発しています。JSONボディを含むPOSTリクエストを通じてトーナメントが作成されると、トーナメントはに挿入さBiMap
れ、DAO実装で次のように宣言されます。
private BiMap<String, Tournament> tournaments = Maps.synchronizedBiMap(HashBiMap.create());
トーナメントが作成されると、それに関連付けられた文字列IDが返されるので、ユーザーはそのトーナメントを将来参照することができます。彼/彼女は次のリクエストを実行して新しいトーナメントから情報を得ることができます:
GET http://localhost:8080/eventscheduler/c15268ce-474a-49bd-a623-b0b865386f39
しかし、そのようなIDのトーナメントが見つからない場合はどうなりますか?これまでのところ、204応答を返しています。まあ、ジャージーはnull
、そのメソッドの1つから戻るときに私のためにそれをやっています。これは、上記のルートに対応するメソッドです。
@Path("/{id}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Tournament getTournament(@PathParam("id") String id) {
Optional<Tournament> optTournament = tournamentDao.getTournament(id);
if (optTournament.isPresent())
return optTournament.get();
return null;
}
私の質問は次のとおりです。リソースが見つからなかったので、204: No Content
応答を返すことは問題あり404
ませんか、それとも代わりに応答でなければなりませんか?
それを404に変更する必要がある場合、明らかな質問:メソッドのシグネチャを変更する必要がありますか?これで(タイプTournament
)のトーナメントが返されない可能性があるため、メソッドは異なるように見えるはずです。Response
代わりに、型を戻り値の型として使用する必要がありますか?
{content: ''}
、204応答は不適切です。