Ich entwickle einen einfachen RESTful-Service für Turniere und Zeitpläne. Wenn ein Turnier über eine POST-Anforderung erstellt wird, die einen JSON-Body enthält, wird das Turnier BiMap
in eine DAO-Implementierung eingefügt , die wie folgt deklariert ist:
private BiMap<String, Tournament> tournaments = Maps.synchronizedBiMap(HashBiMap.create());
Wenn ein Turnier erstellt wird, wird die zugehörige Zeichenfolgen-ID zurückgegeben, damit der Benutzer künftig auf dieses Turnier verweisen kann. Er / sie kann Informationen vom neuen Turnier zurückerhalten, indem er / sie die folgende Anfrage ausführt:
GET http://localhost:8080/eventscheduler/c15268ce-474a-49bd-a623-b0b865386f39
Aber was ist, wenn kein Turnier mit einer solchen ID gefunden wird? Bisher gebe ich eine Antwort zurück. Nun, Jersey tut es für mich, wenn ich null
von einer seiner Methoden zurückkehre. Dies ist die Methode, die der obigen Route entspricht:
@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;
}
Meine Frage lautet: Ist es in Ordnung, eine 204: No Content
Antwort zurückzugeben, oder sollte es stattdessen eine 404
Antwort sein, da die Ressource nicht gefunden wurde?
Wenn ich es in eine 404 ändern sollte, offensichtliche Frage: Ich sollte die Methodensignatur ändern, oder? Da jetzt ein Turnier (vom Typ Tournament
) möglicherweise nicht zurückgegeben wird, sollte die Methode anders aussehen. Soll ich Response
stattdessen den Typ als Rückgabetyp verwenden?
{content: ''}
), wäre eine 204-Antwort unangemessen.