1. Gambaran keseluruhan
Untuk mempermudah pengembangan perkhidmatan web REST dan klien mereka di Java, implementasi API JAX-RS yang standard dan mudah alih telah dirancang yang disebut Jersey.
Jersey adalah kerangka sumber terbuka untuk mengembangkan perkhidmatan web REST yang memberikan sokongan untuk API JAX-RS dan berfungsi sebagai pelaksanaan rujukan JAX-RS .
Dalam tutorial ini, kita akan melihat bagaimana kita dapat menubuhkan badan respons Jersey dengan pelbagai jenis media.
2. Pergantungan Maven
Pertama, kita memerlukan kebergantungan berikut yang termasuk dalam fail pom.xml :
org.glassfish.jersey.bundles jaxrs-ri 2.26 org.glassfish.jersey.core jersey-server 2.26
Versi terbaru JAX-RS boleh didapati di jaxrs-ri, dan pelayan Jersey boleh didapati di pelayan jersey
3. Respons di Jersey
Secara semula jadi, ada cara yang berbeza untuk membina respons menggunakan Jersey , dan kami akan melihat bagaimana kami dapat membuatnya di bawah.
Semua contoh di sini adalah permintaan HTTP GET, dan kami akan menggunakan perintah curl untuk menguji sumbernya.
3.1. Maklum Balas Teks Ok
Titik akhir yang ditunjukkan di sini adalah contoh mudah bagaimana teks biasa dapat dikembalikan sebagai tindak balas Jersey:
@GET @Path("/ok") public Response getOkResponse() { String message = "This is a text response"; return Response .status(Response.Status.OK) .entity(message) .build(); }
Kita boleh melakukan HTTP GET menggunakan curl untuk mengesahkan tindak balas:
curl -XGET //localhost:8080/jersey/response/ok
Titik akhir ini akan menghantar jawapan seperti berikut:
This is a text response
Apabila jenis media tidak ditentukan, Jersey akan menetapkan teks / dataran secara lalai.
3.2. Ralat Ralat
Kesalahan juga boleh dihantar kembali sebagai tindak balas Jersey:
@GET @Path("/not_ok") public Response getNOkTextResponse() { String message = "There was an internal server error"; return Response .status(Response.Status.INTERNAL_SERVER_ERROR) .entity(message) .build(); }
Untuk mengesahkan respons, kami dapat melakukan permintaan HTTP GET menggunakan curl :
curl -XGET //localhost:8080/jersey/response/not_ok
Mesej ralat akan dihantar kembali sebagai tindak balas:
There was an internal server error
3.3. Respons Teks Biasa
Kami juga dapat mengembalikan respons teks biasa :
@GET @Path("/text_plain") public Response getTextResponseTypeDefined() { String message = "This is a plain text response"; return Response .status(Response.Status.OK) .entity(message) .type(MediaType.TEXT_PLAIN) .build(); }
Sekali lagi, kita dapat melakukan HTTP GET menggunakan curl untuk mengesahkan tindak balas:
curl -XGET //localhost:8080/jersey/response/text_plain
Tanggapannya adalah seperti berikut:
This is a plain text response
Hasil yang sama juga dapat dicapai melalui Menghasilkan anotasi dan bukannya menggunakan kaedah type () dalam Respons :
@GET @Path("/text_plain_annotation") @Produces({ MediaType.TEXT_PLAIN }) public Response getTextResponseTypeAnnotated() { String message = "This is a plain text response via annotation"; return Response .status(Response.Status.OK) .entity(message) .build(); }
Kami boleh melakukan verifikasi tindak balas menggunakan keriting :
curl -XGET //localhost:8080/jersey/response/text_plain_annotation
Inilah tindak balasnya:
This is a plain text response via annotation
3.4. Respons JSON Menggunakan POJO
A mudah POJO (Pojo) juga boleh menjadi membina digunakan balas Jersey .
Kami mempunyai Person POJO yang sangat sederhana ditunjukkan di bawah, yang akan kami gunakan untuk membina respons:
public class Person { String name; String address; // standard constructor // standard getters and setters }
The Orang Pojo kini boleh digunakan untuk kembali JSON sebagai badan Respon :
@GET @Path("/pojo") public Response getPojoResponse() { Person person = new Person("Abhinayak", "Nepal"); return Response .status(Response.Status.OK) .entity(person) .build(); }
Cara kerja titik akhir GET ini dapat disahkan - melalui arahan ikal berikut :
curl -XGET //localhost:8080/jersey/response/pojo
Person POJO akan berubah menjadi JSON dan dihantar kembali sebagai tindak balas:
{"address":"Nepal","name":"Abhinayak"}
3.5. Respons JSON Menggunakan Rentetan Ringkas
Kita boleh menggunakan rentetan yang telah diformat untuk membuat respons , dan ia dapat dilakukan dengan sederhana.
Titik akhir berikut adalah contoh bagaimana JSON yang diwakili sebagai String dapat dihantar kembali sebagai JSON dalam tindak balas Jersey:
@GET @Path("/json") public Response getJsonResponse() { String message = "{\"hello\": \"This is a JSON response\"}"; return Response .status(Response.Status.OK) .entity(message) .type(MediaType.APPLICATION_JSON) .build(); }
This can be verified by doing an HTTP GET using curl to verify the response:
curl -XGET //localhost:8080/jersey/response/json
Calling this resource will return a JSON:
{"hello":"This is a JSON response"}
The same pattern applies for other common media types like XML or HTML. We just need to notify Jersey that it's an XML or HTML using MediaType.TEXT_XML or MediaType.TEXT_HTML and Jersey will handle the rest.
4. Conclusion
In this quick article, we constructed Jersey (JAX-RS) responses for a variety of media types.
All of the code snippets, mentioned in the article, can be found in over on GitHub.