Merhaba arkadaşlar, bu yazımda @QueryParam, @Context ve @DefaultValue notasyonlarını anlatacağım.
@QueryParam
@QueryParam ile URI lere parametre geçirebiliriz yada inject edebiliriz. Örnek olarak URI şu biçimde olur:
/path?param1=value1¶m2=value2¶m3=value3 şeklinde olur. Şimdi örnek üzerinden konuyu anlamaya çalışalım.
Person.java
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Person { private int id; private String name; private String surname; public Person(int id, String name, String surname) { this.id = id; this.name = name; this.surname = surname; } public Person() { } // Getters and Setters |
Person sınıfı bizim pojo sınıfımızdır. İd, name ve surname isimlerinde değişkenler ve bu değişkenlerin getters/setters metotları vardır.
RestService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
@Path("/queryparam") public class RestService { static List<Person>personList=new ArrayList<>(); static { personList.add(new Person(1,"Furkan","KOÇ")); personList.add(new Person(2,"Osman","KORUCU")); personList.add(new Person(3,"Emre","ÖZTÜRK")); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("/param") public Person getPersonWithId(@QueryParam("id") int id) { Person person=new Person(); for (Person person2 : personList) { if(person2.getId()==id) { person=person2; } } return person; } |
Static olarak personList adında bir liste oluşturulmuş ve bu listeye nesneler eklenmiştir. getPersonWithId() metodu kullanılarak id değeri @QueryParam olarak gönderilerek gelen id ye ait person döndürülecektir. Postman kullanarak isteği gönderelim ve sonuca bakalım.
URI => http://localhost:8080/JAX-RS_Tutorial/application/queryparam/param?id=2
Görüldüğü üzeri id si 2 olan değer Json türünde başarılı bir şekilde cevap olarak döndürüldü. Şimdi başka bir örnekte @QueryParam ile birden fazla parametre gönderelim.
1 2 3 4 5 6 |
@GET @Path("/multipleparam") public String get(@QueryParam("id") int id,@QueryParam("name") String name) { String hello="ID => "+id+" Name => "+name; return hello; } |
Postman ile isteği gönderelim.
URI=> http://localhost:8080/JAX-RS_Tutorial/application/queryparam/multipleparam?id=34&name=Furkan
İstek başarılı bir şekilde yapıldı ve cevap döndürüldü. Eğer değerler atanmamış olsaydı cevap null olarak dönecekti. Bunu engellemek için yani default değer atamak için @DefaultValue notasyonu kullanılır. Şimdi örnek üzerinde bakalım.
@DefaultValue
1 2 3 4 5 6 7 8 |
@GET @Path("/default") public String getDefault(@DefaultValue("81") @QueryParam("id") int id,@DefaultValue("Furkan") @QueryParam("name")String name) { String message="id => "+id+" Name => "+name; return message; } |
id parametresinin default değeri 81 olarak ve name parametresinin default değeri Furkan olarak ayarlanmıştır. Şimdi bu parametrelere boş istek gönderelim ve cevaba bakalım.
URI => http://localhost:8080/JAX-RS_Tutorial/application/queryparam/default
Görüldüğü üzere default kaynağına parametre gönderilmedi ve verilen default değerler başarılı bir şekilde cevap döndürüldü.
@Context
1 2 3 4 5 6 7 8 |
@GET @Path("/context") public String getContext(@Context UriInfo info) { String id=info.getQueryParameters().getFirst("id"); String name=info.getQueryParameters().getFirst("name"); String message="İd => "+id+" Name => "+name; return message; } |
UriInfo sınıfı bize Query parametrelerine erişebilmemizi sağlar. Şimdi postman ile istek gönderelim ve cevaba bakalım:
URI => http://localhost:8080/JAX-RS_Tutorial/application/queryparam/context?id=1&name=Furkan
Başarılı bir şekilde cevap döndürüldü. Bu yazımı burada bitiriyorum diğer yazılarımda görüşmek üzere…