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 BiMapbir 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, nullyö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 Contentyanıt döndürmek uygun 404mu 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 Responseyerine türü dönüş türü olarak mı kullanmalıyım?
{content: ''}) Olsaydı, 204 yanıtı uygunsuz olurdu.