Merhaba arkadaşlar, bu yazımda @POST notasyonunu ayrıntılı bir şekilde anlatacağım.
HTTP POST yöntemi, sunucuya veri gönderir. İsteğin gövdesinin tipi, İçerik Tipi(Content-Type) başlığı ile belirtilir. İçerik Tipi, kaynağın ortam türünü belirtmek için kullanılır. Şimdi örnekler üzerinden konuyu anlamaya çalışalım:
Person.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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. Değişkenler ve değişkenlere ait getter/setter metotlara sahiptir. Şimdi service sınıfımızı inceleyelim.
RestService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@Path("/post") public class RestService { List<Person>persons=new ArrayList<Person>(); @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public List<Person> addPerson(Person person) { persons.add(person); return persons; } } |
Bu kaynakta görüldüğü @PATH sadece sınıfa verilmiş. Yani URI’sinin sonu “/post” olduğunda addPerson() metodu çalışacaktır.
@POST => Kaynağın post metot olduğunu belirtir.
@Consumes => Kabul edilecek içerik tipi.(Content-Type)
@Produces => Response olarak üretilecek içerik tipi
Persons adında bir listemiz var. Bu kaynağa her istek yolladığımızda person nesnesini listemize ekleyecek ve JSON olarak dönecek. Şimdi bir istek(request) gönderelim ve sonuca(response) bakalım.
İstek gönderildi. Sonuç:
Görüldüğü gibi sonuç JSON listesi olarak döndürüldü.
Şimdi başka bir örneği inceleyelim.
Person.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 |
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("/post") public class RestService { List<Person>persons=new ArrayList<Person>(); @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Path("/addperson") public List<Person> personAdd(Person person) { persons.add(person); return persons; } @POST @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) @Path("/addstring") public String addString(String request) { return "Success => "+request; } } |
Burada iki adet kaynak mevcuttur. İki kaynağa da @PATH ile farklı pathler verilmiştir. Önce ilk metodu inceleyelim.
JSON formatında veri kabul ediyor ve JSON döndürüyor ilk örnekteki gibi. Tek fark olarak URI’sı farklı.
İkinci metot ise parametre olarak String kabul ediyor yani Text_Plain tipinde veri kabul ediyor. Dönüş olarak String veri döndürüyor ama bu veriyi Text formatında döndürüyor. Şimdi Postman aracılığıyla test edelim.
Text olarak “Furkan” değeri istek olarak gönderildi. Sonuç:
Görüldüğü üzere istek başarılı şekilde gönderildi ve sonuç başarılı şekilde döndürüldü.
Bu yazıyı burada bitiyorum. Diğer yazılarımda görüşmek üzere…