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>
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;
}
}
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;
}
}
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
- 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.