Quarkus Rest Api Uygulaması Yapmak
Quarkus Dersleri‘ne devam ediyorum. Bu yazıda Quarkus kullanarak Json Rest Api uygulaması nasıl geliştirileceğine bakacağız. Kaynak kodları ise yazının sonundaki linkten indirebileceksiniz.
Uygulama Yapısı
Quarkus uygulamamız bir maven projesi olacaktır. Maven bağımlılığımız aşağıdaki gibi olacak.
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jackson</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Code language: HTML, XML (xml)
Uygulamamızda kullandığımız kütüphaneler rest servis yazmamız için gereklidir.
Model
Öğrenci modelimiz olacak. Bu öğrenci bilgileri ile birlikte bir CRUD işlemi yapacak Qurkus Rest Api Uygulaması yapacağız.
public class Ogrenci {
public String adi;
public int numarasi;
public Ogrenci() {
}
public Ogrenci(String adi, int numarasi) {
this.adi = adi;
this.numarasi = numarasi;
}
}
Code language: PHP (php)
Controller
Rest servislerimizi yazacağımız Controllerimizi oluşturacağız.
@Path("/ogrenciler")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class OgrenciController {
private Set<Ogrenci> ogrencis = Collections.newSetFromMap(Collections.synchronizedMap(new LinkedHashMap<>()));
public OgrenciController() {
ogrencis.add(new Ogrenci("Burak", 1234));
ogrencis.add(new Ogrenci("Veli", 5677));
}
@GET
public Set<Ogrenci> list() {
return ogrencis;
}
@POST
public Set<Ogrenci> add(Ogrenci ogrenci) {
ogrencis.add(ogrenci);
return ogrencis;
}
@DELETE
public Set<Ogrenci> delete(Ogrenci ogrenci) {
ogrencis.removeIf(existingOgrenci -> existingOgrenci.adi.contentEquals(ogrenci.adi));
return ogrencis;
}
}
Code language: PHP (php)
Construcytor metodumuzda in memory bilgilerimizi yazdık ve GET, POST DELETE metotlarımızı oluşturduk bu oluşturduğumuz metotlar javax.ws.rs kütüphanesinden faydalanarak olşurduk. Bu yapıda quarkus kullanmak ile normal bir rest servis yazma arasında bir fark yok. Tabiki hız konusu için konuşmuyorum.
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
alanları Json Rest Apimizin Client’tan response ve request tipini belirtiyoruz.
GZip Desteği
GZip (GNU zip) dosya sıkıştırma uygulamasıdır sunucu tarafında kullanılarak uygulamalarıımızı sıkıştırarak performans ve hız sağlanmaktadır.
Quarkus’un GZip desteği bulunmaktadır ve bunu properties dosyasında belirterek aktifleştirebiliyoruz.
quarkus.resteasy.gzip.enabled=true
quarkus.resteasy.gzip.max-input=20M
Code language: JavaScript (javascript)
- enable diyerek aktifleştirebiliyoruz.
- max-input diyerek ise kullanılabilecek üst limit belirlenmektedir. Varsayılan üst değer 10M’dir.
Sonuç
Postmana ve istek yapalım. Uygulamamızın sonuclarına bakalım.
Uygulamamız sorunsuz bir şekilde çalışıyor sonraki Quarkus Dersleri’nde görüşmek üzere.
Proje örneği için teşekkür ederim. Delete ve Post işlemleri için de örnek verebilir misiniz? Bir de curl ile yazmak istersek nasıl yazabiliriz? Teşekkürler. 🙂
Postman’dan DELETE kısmını seçip id göndermek yeterli olacaktır.
CURL olarak istek atmak isterseniz;
curl -X DELETE http://localhost/ogrenciler/1
yazabilirsiniz. Umarım sorunuzu anlayabilmişimdir.
Çok teşekkür ederim. Yeterli benim için. 🙂