Melanjutkan tutorial dasar mengenai REST web service menggunakan spesifikasi JAX-RS di sini, blog post kali ini akan membahas mengenai bagaimana sebuah web service memberikan keluaran berupa JSON ketika ada request. Kalau sudah membaca teori mengenai web service terutama REST pasti akan tahu peranan dari JSON pada REST.
Dependensi
Nantinya method pada web service yang akan kita buat memiliki nilai kembalian berupa objek dari List bukan langsung berupa JSON. Nah untuk mengubahnya ke bentuk JSON kita memerlukan sebuah library. Tambahkan dependensi berikut ke dalam file pom.xml
1 2 3 4 5 |
<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-json</artifactId> <version>1.17.1</version> </dependency> |
Rest Service
Sebelum membuat sebuah rest service buat terlebih dahulu sebuah kelas model
1 2 3 4 5 6 7 8 9 10 11 |
package com.agungsetiawan.jaxrshello.entity; public class Customer { private Long id; private String username; private String firstName; private String lastName; private String address; //getters dan setters } |
Rest service yang akan kita tulis sebentar lagi masih tergolong sederhana dimana data yang dikembalikan ditulis secara harcoding. Nanti pada implementasi nyatanya biasa mengambil data dari sebuah database.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
package com.agungsetiawan.jaxrshello; import com.agungsetiawan.jaxrshello.entity.Customer; import java.util.ArrayList; import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path("/hello") public class HelloService { @GET @Path("/{param}") public Response getHello(@PathParam("param") String message){ String output="Hello "+message; return Response.status(200).entity(output).build(); } @GET @Path("/customers") @Produces(MediaType.APPLICATION_JSON) public List getAllCustomers(){ Customer customerOne=new Customer(); customerOne.setId(1L); customerOne.setUsername("blinkawan"); customerOne.setFirstName("Agung"); customerOne.setLastName("Setiawan"); customerOne.setAddress("Kamulan Bhumishambara"); Customer customerTwo=new Customer(); customerTwo.setId(1L); customerTwo.setUsername("haurilnisfari"); customerTwo.setFirstName("Hauril"); customerTwo.setLastName("Maulida Nisfari"); customerTwo.setAddress("Medang Kamulan"); List<Customer> customers=new ArrayList<Customer>(); customers.add(customerOne); customers.add(customerTwo); return customers; } } |
Pada method yang saya tandai di atas, method ini nantinya ketika dieksekusi akan memberikan keluaran berupa data Json dari data objek yang berisi customerOne dan customerTwo. Perhatikan annotation yang ada di situ, tentu sudah tidak asing dengan @GET dan @Path. @Produces(MediaType.APPLICATION_JSON) berguna untuk memberitahu rest service bahwa keluaran yang diinginkan adalah berupa Json.
web.xml
Ubah file web.xml dengan menambahkan beberapa baris di bawah ini yang saya tandai
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <servlet-name>jersey-servlet</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.agungsetiawan.jaxrshello</param-value> </init-param> <init-param> <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey-servlet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app> |
Run It!
Arahkan browser ke http://localhost:8084/JaxRsHello/rest/hello/customers, yang muncul adalah data berbentuk JSON
Tutorial dari seri JAX-RS mendatang akan membahas tentang mengkonsumsi output JSON ini menggunakan sebuah klien, pastikan kalian tetap update 😀
mas mau nanya, misalkan saya sudah punya databasenya trus mau di tampilin jsonnya, caranya gimana?