Merhaba arkadaşlar, bu yazımda @GET notasyonunu ayrıntılı bir şekilde anlatacağım.
Yalnızca kaynak gösterimi/bilgisi almak için GET istekleri kullanılır. GET istekleri kaynağın durumunu değiştirmediğinden, bu isteklerin güvenli olduğu bilinir. GET API’lerinin kaynağı değiştirilmediği takdir de aynı sonu döner.
Herhangi bir HTTP GET API’si için, eğer kaynak sunucuda bulunursa, o zaman genellikle XML veya JSON içeriği olan cevap gövdesiyle beraber HTTP cevap kodunu 200(OK) döndürülür.
Kaynak sunucuda bulunmazsa, 404 HTTP yanıt kodunu (Found Not) döndürülür. Benzer şekilde, GET isteğinin kendisinin doğru şekilde oluşturulmadığı tespit edilirse, sunucu HTTP yanıt kodunu 400 (Bad Request) olarak döndürür. Şimdi örnek üzerinden inceleyelim.
Person.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 adında pojo sınıfımız vardır. Bu sınıf da değişkenler ve bu değişkenlere ait getter/setter metotlar vardır.
1 2 3 4 5 6 7 8 9 10 |
@Path("/get") public class RestService { @GET @Produces(MediaType.TEXT_PLAIN) public String getPerson() { Person person = new Person(1, "Abdullah Furkan", "KOC"); return "id:"+person.getId()+" Name:"+person.getName()+" Surname:"+person.getSurname(); } } |
Görüldüğü gibi sadece sınıfımıza path verilmiştir. Bu path sayesinde bu kaynağa erişebiliriz.
Eğer bir sınıf da 2 adet @GET metodu varsa ve bu metotlara ayrı @PATH verilmediyse sunucu hangi metodu çağıracağını bilmediği için hata verir. Fakat burada ki gibi bir adet @GET metodumuz varsa başarılı bir şekilde çalışır.
@GET => Kaynağın GET metodu olduğunu belirtir.
@Produces => Kaynağın dönüş tipini belirtir.
Şimdi bu kaynağa istek yollayalım. Postman kullanarak http://localhost:8080/JAX-RS_Tutorial/application/get adresine get isteği göndererek sonuca bakalım:
Bu URL de application: Application sınıfına verilen @PATH‘dir.
Görüldüğü gibi sonuç text olarak döndü ve 200 OK cevabı alındı. Şimdi diğer bir örneğe bakalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@Path("/get") public class RestService { @GET @Produces(MediaType.APPLICATION_JSON) @Path("/getjson") public Person getPersonJson() { Person person = new Person(1, "Abdullah Furkan", "KOC"); return person; } @GET @Produces(MediaType.TEXT_PLAIN) @Path("/gettext") public String getPersonText() { Person person = new Person(1, "Abdullah Furkan", "KOC"); return "id:"+person.getId()+" Name:"+person.getName()+" Surname:"+person.getSurname(); } } |
Burada 2 adet kaynak mevcuttur. Bu kaynaklara @PATH ile özel pathler verildiği için başarılı bir şekilde çalışacaktır. Görüldüğü gibi getPersonJson() metodu JSON formatında dönüş yapacaktır. Şimdi 2 kaynağada istek(request) gönderelim.
Sonuç olarak başarılı bir şekilde JSON nesnesi döndürüldü.
Sonuç Text formatında başarılı bir şekilde döndürüldü. Bu iki istek arasındaki farklar dönüş tipi ve URL’dir.
Bu yazımı burada bitiriyorum diğer yazılarımda görüşmek üzere…