Saya mengembangkan layanan RESTful sederhana untuk turnamen dan jadwal. Ketika sebuah turnamen dibuat melalui permintaan POST yang berisi badan JSON, turnamen tersebut dimasukkan ke dalam BiMap
, dinyatakan sebagai berikut dalam implementasi DAO:
private BiMap<String, Tournament> tournaments = Maps.synchronizedBiMap(HashBiMap.create());
Ketika sebuah turnamen dibuat, id string yang terkait dikembalikan sehingga pengguna dapat memiliki referensi di masa depan dari turnamen itu. Ia dapat memperoleh informasi kembali dari turnamen baru dengan melakukan permintaan berikut:
GET http://localhost:8080/eventscheduler/c15268ce-474a-49bd-a623-b0b865386f39
Tetapi bagaimana jika tidak ada turnamen dengan id seperti itu ditemukan? Sejauh ini, saya mengembalikan respons 204. Nah, Jersey melakukannya untuk saya ketika kembali null
dari salah satu metodenya. Ini adalah metode yang sesuai dengan rute di atas:
@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;
}
Pertanyaan saya adalah: apakah 204: No Content
boleh mengembalikan jawaban, atau haruskah itu 404
balasan, karena sumber daya tidak ditemukan?
Jika saya harus mengubahnya ke 404, pertanyaan yang jelas: Saya harus mengubah metode tanda tangan kan? Karena sekarang turnamen (tipe Tournament
) mungkin tidak dikembalikan, metodenya akan terlihat berbeda. Saya harus menggunakan Response
tipe sebagai jenis kembali bukan?
{content: ''}
), respons 204 akan tidak pantas.