Turnuvalar ve programlar için basit bir RESTful hizmeti geliştiriyorum. JSON gövdesi içeren bir POST isteği ile bir turnuva oluşturulduğunda, turnuva BiMap
bir DAO uygulamasında aşağıdaki gibi ilan edilen bir a'ya eklenir :
private BiMap<String, Tournament> tournaments = Maps.synchronizedBiMap(HashBiMap.create());
Bir turnuva oluşturulduğunda, kullanıcının bu turnuvanın ileride referansını alabilmesi için ilişkili dize kimliği döndürülür . Aşağıdaki talebi yerine getirerek yeni turnuvadan bilgi alabilir:
GET http://localhost:8080/eventscheduler/c15268ce-474a-49bd-a623-b0b865386f39
Peki böyle bir kimliğe sahip turnuva bulunmazsa ne olur? Şimdiye kadar 204 yanıtı geri gönderiyorum. Jersey, null
yöntemlerinden birinden dönerken bunu benim için yapıyor . Bu, yukarıdaki rotaya karşılık gelen yöntemdir:
@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;
}
Sorum şu: Bir 204: No Content
yanıt döndürmek uygun 404
mu yoksa kaynak bulunamadığı için bunun bir yanıt olması mı gerekiyor?
Bunu 404, açık bir soru olarak değiştirirsem: Yöntem imzasını doğru değiştirmeli miyim? Şimdi (tür Tournament
) bir turnuva iade edilmeyebileceğinden, yöntem farklı görünmelidir. Bunun Response
yerine türü dönüş türü olarak mı kullanmalıyım?
{content: ''}
) Olsaydı, 204 yanıtı uygunsuz olurdu.