Uygulama geliştirme sürecinde Postman kullanımı

Kadir Bekar
6 min readApr 25, 2021

--

https://giphy.com/gifs/season-7-the-simpsons-7x4-3o6Mbbs879ozZ9Yic0

Selamlar. Bugün içerik olarak, Postman kullanımının uygulama geliştirme sürecine nasıl katkı sağladığı ile alakalı bir örnek yapacağız.

Neden Postman kullanmalıyız sorusunun cevabına bir bakalım sonrasında örneğimize geçelim.

Geliştirme esnasında kendi yazdığımız veya bir başkası tarafından hazırlanan metotları uygulamamızda doğrudan kullanmak yerine ilk olarak Postman üzerinde test edip, kullanılabilir durumda ise uygulamamıza entegre edersek, daha emin bir şekilde ilerlemiş oluruz. Eğer metotta bir hata var ise duruma göre hızlı aksiyon alıp, karşılaştığımız probleme de hızlı bir çözüm bulmuş oluruz.

Postman kurulumu için bu linkten faydalanabilirsiniz. Kurulumu yaptıktan sonra uygulamaya bir kullanıcı hesabı ile giriş yapıp devam etmenizi tavsiye ederim. Bu sayede yaptığınız ayarlar(Tema vb.), istekler kayıtlı bir şekilde kalacaktır. Başka bir bilgisayardan aynı hesap ile giriş yaptığımızda kaldığımız yerden devam edebiliriz.

Bizi karşılayan ilk ekran aşağıdaki gibidir. Request seçeneğini seçiyoruz.

Şimdi sırada, aşağıdaki resimde olduğu gibi test edeceğimiz metodumuza bir isim verelim, farklı projelerde çalışma ihtimalimizi varsayarsak projemiz için bir koleksiyon oluşturalım ve devam edelim.

Metot ismi girdik, postman_test isimli bir koleksiyon oluşturduk ve Save to postmen_test butonuna tıkladık.

Oluşturulan koleksiyon sol panelde gözükecektir. İleri zamanda test edeceğimiz metotların artması durumunda bir karışıklık yaşanmaması için metotlarımızı farklı kategoriler altına kayıt edebiliriz. Bunun için oluşturduğum koleksiyonun üzerine geliyorum, üç noktaya tıklayıp Add Folder seçeneğim ile kullanacağım kategorileri belirliyorum.

Add Folder
Test amaçlı oluşturduğum kategoriler
Kayıt etme butonuna tıkladıktan sonra bizi karşılayan ekran.

Sizinle beraber eş zamanlı ilerleyebilmek için bu kaynaktan faydalanacağız.

Çok basit bir şekilde bir metodu hızlıca test edelim. Yapmam gereken tek şey “Enter Request URL” kısmına https://jsonplaceholder.typicode.com/posts yazıp, metot türümün GET olduğundan emin olup Send butonuna basmak.

Gördüğümüz gibi, henüz geliştirme yaptığımız platforma(Web, Mobil, Desktop vb.) metodumuzu eklemeden metodun çalışıp çalışmadığını bu şekilde test etmiş olduk. Dönen veri ile birlikte HTTP status kodunu, ne kadar sürede döndüğü gibi bilgileri de görmüş olduk. Bende olan görüntü sizde yoksa, Body başlığının ve onun altındaki Pretty kısmının seçildiğinden emin olunuz.

Post işlemine geçmeden önce şunu belirtmekte fayda var. Bize dönen veri JSON formatında döndü fakat biz bunun için bir ayar yapmadık. Bunu detaylıca görmek için aşağıdaki resmi ekliyorum.

Headers

Resimde görüldüğü üzre default olarak Content-Type değerinin karşılığı application/json olarak ayarlanmış. Farklı bir veri türü ile çalışıyorsak burada güncelleme yapmamız gerekmektedir.

Şimdi ise birde POST işlemi gerçekleştirelim. Bu linke tıkladığımızda POST (Creating a resource) işlemi için bizden beklenilen body(Request payload) aşağıdaki gibi olacakmış.

Benden JSON veri istediği için raw ve JSON kısmını işaretledim. Sonrasında Send butonuna tıklayarak kaydımı oluşturuyorum.

Silme ve Güncelleme işlemleri içinde bizden beklenilen değerleri(Endpoint, body, Metot türü, Content-Type vb.) Postman üzerinde doldurup metotlarımızı test edebiliriz. Bu yazıyı bitirmeden önce, henüz üzerine konuşmadığımız birkaç farklı özellik üzerine konuşalım.

Fark ettiyseniz her seferinde bizim elimizde sabit bir BASE_URL(https://jsonplaceholder.typicode.com/) var ve çalışma yapacağımız metoda göre bu URL’in belirli kısımları değişiyor. Şuan için sadece BASE_URL sabit olabilir fakat projeye göre daha birçok sabitimiz olabilir.

Örneğin back-end servisine yapılacak her istek için Headers kısmına yetkilendirme(Authorization) amacı ile farklı value değerleri ekleyebiliriz. Bunu yapma amacımız istek yapılacak olan metotlara kullanıcı rolü bazlı erişim yetkisi koymak olabilir. Örneğin toplamda 15 tane metodum var. Bunların 10 tanesi İnsan kaynakları rolü ile kayıtlı olan kullanıcılar için erişilebilir iken geri kalan 5 tanesi Yazılım departmanı rolü ile kayıtlı olan kullanıcılar içindir. Bu sadece basit bir örnek aslında. Sistemin işleyişine göre kendi kurallarımızı belirleyebiliriz.

Şimdi ise amacımız, test sürecinde kullanacağımız sabit değerleri nasıl oluşturabiliriz konusu. Bu sayede, sabit değerlerimiz üzerinde yapılacak olan herhangi bir değişiklikte kullanmadığımız sabit değişkeni bütün metotlarda tek tek değiştirmekten ziyade tek bir yerde değişiklik yaparak her yere etki etmek olacaktır. Bu değişikliği biz veya bir başkası yapabilir. Amacımız, esnek bir yapı kurarak olacak olan değişikliğe çok hızlı bir şekilde adapte olmak, direnç göstermemek, test sürecinde kendimizi tekrar etmemek.

Bu sayfayı açmak için, Sağ üst tarafta bulunan göz işaretine tıklıyorum ve Global başlığı karşısındaki Edit butonuna tıklıyorum. Sonrası için ise eklemek istediğim değerin ismini Variable Name altına, isme karşılık gelecek olan değeri ise diğer alanlara ekliyorum. Aşağıya kendi değerlerimi ekleyip Save butonuna tıklamadan önceki güncel halin resmini ekliyorum.

Put işlemi için bu linke tıklayarak bizden istenilen Endpoint, body, metot türünü Postman üzerinde uygulayalım. Sonrasında ise eklediğimiz sabit değeri test edelim.

Görüldüğü gibi artık uzun uzadıya Endpoint yazmıyoruz. {{BASE_URL}} diye tanımladığım sabiti resimdeki gibi çağırarak gerekli olan uzantıyı bunun sonuna ekliyorum. Daha temiz bir görüntü ve dinamik bir yapı ile metodumuzu test etmiş olduk. Bu özelliği kullanmasaydık 100 farklı metoda tek tek bu URL’i yapıştırdığımızı, ve BASE_URL’in değiştiğini hayal edin.

Fikir vermesi açısından Headers kısmına gidelim, HR ve SOFTWARE keylerimizin kullanıldığı senaryoyu görelim.

Test edeceğimiz metoda Header eklenmesi gerektiği durumda bu şekilde ekleme yaparak istek yapan kullanıcıyı ayırt edebiliriz. Şuan burada ne fark var diyebilirsiniz fakat şu senaryoyu düşünelim. Mobil uygulamamız var ve kullanıcı sisteme giriş yapacak. Bilgiler başarılı bir şekilde girilip sisteme giriş yaptığımızda kullanıcının hangi rol ile kayıtlı olduğu bilgisini aldık ve telefonun lokal veritabanına bu bilgiyi kayıt ettik. Mobil cihazdan herhangi bir metoda istek yaparken telefonun lokaline kayıt ettiğimiz bilgiyi Header kısmına ekledik. Bizim servisimiz ise gönderilen isteğe uygun bir geri dönüş yaptı. Bu sayede farklı rollerde çalışan kişilerin kullanması gereken metotları ayırmış olduk.

Son olarak ise dinamik olarak değişen bir değeri Postman üzerinde nasıl yakalarız ve metotlarımızda kullanırız sorusunu cevaplayalım ve yazımızı sonlandıralım.

http://gph.is/2bpMdSz

Varsayalım ki kayıt ettiğimiz bir postu silmek istiyoruz. Bunun için öncelikle kayıtlı olan postları çekmemiz gerekiyor sonrasında silmek istediğimiz postun benzersiz (unique) değerini alıp metodumuza eklemeliyiz. Hafızada tutacağımız unique değer için Postman üzerinde bir değişken oluşturalım. Tekrardan göz ikonuna sonrasında Environment başlığı karşısındaki Add butonuna tıkladım. Aşağıdaki resimden görüldüğü üzre öncelikle çalışacağım Environment için bir isim verdim ve kullanacağım değişken için isim belirledim sonrasında Add diyerek işlemi sonlandırdım.

Şimdi ise GET işlemi ile postlarımızı çekelim sonrasında bizim belirlediğimiz bir postun ID sini nasıl alırız işlemini yapalım.

Bütün postları listele
Liste içindeki ilk postun id sini al ve environment içerisinde oluşturulan post_id değişkenine ata

Resimde olduğu gibi, GET işlemi yaptığım postun Tests başlığı kısmına geldim ve şu kodu ekledim.

Bu kodu eklemem ile birlikte bana gelen liste içerisindeki ilk postun ID sini aldım ve global olarak oluşturduğum değişkene atadım. Sonrasında tekrardan göz ikonuna tıkladım ve atamanın başarılı olup olmadığını kontrol ettim. Şuanda her şey yolunda gözüküyor. Şimdi ise silme işleminde bu değişkeni nasıl kullanırız ona bakalım.

Sabit değişkenleri nasıl kullandıysak, dinamik olarak atama yaptığımız değişkeni de aynı şekilde 2 tane süslü parantez açarak içerisine ekledik. Bu sayede GET işleminden sonra elle post ID si kopyalamak yerine dinamik olarak bir atama yaptık ve delete işleminde kullandık. Dinamik değer atamasını kullanıcı uygulamaya giriş yaptıktan sonra, gelen bilgiler arasında rol ile alakalı olan key bilgisini Environment değişkeninde tutup Headers kısmına gene ekleyebilirdik. Burada biz örnek kullanımlarını gördük. Kendi sisteminizde kullanacağız yapıya göre sabit veya dinamik değişkenleri örneklerde olduğu gibi tanımlayabilir, metotlarınızı test edebilirsiniz.

Oluşturduğunuz koleksiyonu ise Export ederek takımınız ile paylaşabilirsiniz bu sayede tekrar tekrar aynı metotları, ayarları uygulamak zorunda kalmayacaklardır.

Tabi ki Postman üzerinde kullanabileceğimiz birçok özellik mevcut. Diğer özelliklerin kullanımı için ise sitesini ziyaret etmenizi tavsiye ederim.

Umarım faydalı bir içerik olmuştur. Elimden geldiğince açıklamaya çalıştım. Herhangi bir geri dönüşte bulunursanız çok memnun olurum :)

Dinamik değer ataması için faydalandığım kaynak : https://blog.postman.com/extracting-data-from-responses-and-chaining-requests/

--

--