API Geliştirmede Request&Response Sınıfları

Özge Odabaş
3 min readSep 7, 2023

--

Api geliştirirken apimize gelen istek ve client’a gönderilen yanıt datalarının şekillendirilmesi için kullanılan bir yöntemden bahsedeceğiz.

Bu yöntem proje içerisinde oluşturulan klasik entity sınıfları tipinde bir request almak veya response göndermek yerine, ayrıca oluşturulmuş request ve response sınıfları üzerinden datalarımızı yapılandırmamızı sağlar.

Peki zaten oluşturduğumuz entity sınıflarımız varken neden ayrıca böyle bir yapıya ihtiyaç duyuyoruz?

Örneğin, bir web sitesinden gelen POST isteğinden gönderilen bodyde entity’nin id bilgisine ihtiyacımız olmayabilir (mesela id alanlarının otomatik atandığı durumlarda), fakat api response’unda id bilgisine ihtiyaç duyulabilir. Böyle durumlarda request ve reponse yapılarını ayrı olarak oluşturmamız gerekir.

Daha iyi anlamamız için bir örnek üzerinden inceleyelim.

Aşağıda bir Post entity sınıfını görüyoruz.

Bu projede apiye gelen post oluşturma isteklerinde user olarak belirtilen relational alanı bir obje olarak almak yerine sadece user id alanını almamız yeterli olur. Bu durumda aklımıza yeni bir post request sınıfı oluşturmak geliyor.

Request sınıfımızı oluşturup kullanmadan önceki controller methodumuz aşağıdaki gibi.

Bu şekilde ki bir istekte bodyden gönderilecek olan datanın içinde user bilgisi de bulunuyor olmalı. Çünkü Post sınıfında zaten relational olarak user alanı gerekli. Yani göndermemiz gereken post isteği aşağıdaki gibi:

Burada görüldüğü gibi user alanında tüm user bilgilerini obje notasyonunda geçmemiz gerekir.

Bir de request sınıfımızı oluşturduktan sonraki kullanım şeklimize bakalım.

Request Sınıfı

Klasik post işlemi yaptırdığımız servis methodumuzu düzenlersek:

Ve tabiki ilgili controller sınıfı metodunu da yeni request sınıfımıza göre güncellememiz gerekir.

Artık post isteğinin body kısmından bütün bir user objesini değil sadece user id bilgisini almamız yeterli olacaktır.

Aynı yöntemi diğer gerekli gördüğümüz entity sınıfları içinde oluşturabiliriz.

Request/response yöntemini kullandığım projemi inceleyebileceğiniz github repom:

https://github.com/ozgeeodabass/CollabSpark

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Özge Odabaş
Özge Odabaş

Written by Özge Odabaş

Merhaba! Ben Özge. Junior Java Developerım. Kendimi geliştirirken edindiğim bilgileri yazıyorum. Keyifli okumalar.

No responses yet

Write a response