Quarkus

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>

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.

Quarkus Rest Api Uygulama Örneği 1
Quarkus Rest Api Uygulama Örneği 1

Uygulamamız sorunsuz bir şekilde çalışıyor sonraki Quarkus Dersleri’nde görüşmek üzere.


Projenin Kaynak Kodlarına Ulaş


Önceki Ders: Quarkus Merhaba Dünya
Quarkus Dersleri
Sonraki Ders: Uygulama Native Derleme

More in:Quarkus

Bunlara Gözat

3 Comments

  1. 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. 🙂

  2. 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.

  3. Çok teşekkür ederim. Yeterli benim için. 🙂

Yorum Yaz

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir