Postman Nedir? Postman Kullanımı — 1

Mehmet Demirel
5 min readDec 10, 2021

--

Herkese merhaba,

Bu yazı dizisi boyunca sizlere Postman nedir?, Postman niçin kullanılır?, Postman ile neler yapılır?, Postman ile Pentest yapılabilir mi? gibi sorulara yanıt vereceğim ve bir çok trickleri sizlerle paylaşacağım keyifli okumalar dilerim.

Öncelikle Postman’i kısaca tanımlayalım…

Postman, geliştiricilerin HTTP (Hypertext Transfer Protocol) isteklerini bir araya getirerek mönitör etme (monitoring), test etme (testing), paylaşma (sharing), belgeleme (documenting) gibi bir çok işlemi gerçekleştirebileceği HTTP istemcisidir. Postman, API’lerle kolayca çalışmamızı sağlar. Burada API nedir? REST/RESTful nedir? Postman Nedir? Postman arayüz, kolleksiyonlar (collections), ortamlar (environments) gibi kavramları öğreneceğiz. Tabi ne/neler için kullanacağınız size kalmış. Developer, Pentester veya bir Tester iseniz bir sonraki adım için bu makale kolaylık sağlayacaktır. Bu bir tool(araç)’dur.

Postman’i kullanabilmemiz için öncelikle bazı terim ve mimarileri bilmemiz gerekmekte o yüzden kısa kısa bahsedelim detaylı araştırmaları siz okurlara bırakıyorum.

Request ve Response Nedir?

API’nin ne olduğundan bahsetmeden önce kısaca bu bilgileri edinelim böylece API’nin mantığını biraz daha iyi kavrayabiliriz.

Birisi istek (Request) diğeri ise cevap (Response) olarak adlandırılır. Belirlenen parametreler ve metot ile bir Request (istek) gönderilir ve gerekli işlemler yapıldıktan sonra bir Response (cevap) döner.

Örneğin Instagrama kayıt olmak istiyorsunuz sizden belirli ama benzersiz bilgiler istiyor eposta, ad-soyad, kullanıcı adı ve şifre işte siz bu alanları doldurduktan ve kaydol tuşuna bastıktan sonra bir istekte (Request) bulunuyorsunuz ve ardından cevap (Response) olarak size olumlu ya da olumsuz geri dönüş sağlıyor.

Sol kisimda olumsuz, sag kisimda olumlu bir donut bizi karsiliyor.

API Nedir?

API (Application Programing InterfacesUygulama Programlama Arayüzleri) iki yazılım arasında iletişim ve veri (data) alışverişi sağlar. Bu iletişim farklı API’lerin birbirleri arasında da olabilir bir kullanıcı arayüzüyle de.

Bir de bu API’nin türleri vardır kullanım alanları farklıdır. Gelin birazda bunlardan bahsedelim.

CompositeAPI

Birden çok arayüzü birbirine bağlamak için kullanılır. Geliştirici birden fazla uç noktaya (endpoint) kolaylıkla ulaşabilir.

OpenAPI

En aza indirgenmiş kısıtlamalar ile geliştirici ve son kullanıcılar tarafından herkesin kullanımına açık API’lerdir. Public API olarakta tanımlanmaktadır.

PartnerAPI

Stratejik bir iş ortağının bir diğer stratejik iş ortağına sunduğu API’lerdir. Erişim için özel yetkilendirmeye sahiptir ve herkese açık değildir.

InternalAPI

Harici kullanıcılardan gizlenir, sadece dahili sistemler tarafından açığa çıkarılır. Internal API’ler, daha iyi üretkenlik ve hizmetlerin yeniden kullanımı için farklı dahili geliştirme ekiplerinde kullanılmak üzere tasarlanmıştır.

REST/RESTful Nedir?

REST(REpresentational State Transfer) dağıtık sistemler tasarlamak için kullanılan bir mimari tarzdır. Yani bizim oluşturduğumuz ya da şirketlerin oluşturmuş olduğu API’ler için bir mimaridir.

Dağıtık sistemler : Ortak bir amaç için, çeşitli iletişim protokolleri ile birbirleri ile iletişim halinde olan birden fazla yazılım sisteminin oluşturduğu sistemlere denir.

İstemci(Client) — Sunucu (Server) arasındaki haberleşmeyi HTTP üzerinden sağlayan bir mimaridir. Tabi yukarıda da bahsettiğimiz gibi private (özel) API’lerde de mevcut. Servis yönelimli mimarilerde de kullanılan bir transfer türüdür. REST’in tüm prensiplerini yerine getiren API’ler ise RESTful olarak nitelendirilir.

Postman’e HTTP istemcisi demiştik kısaca HTTP nedir bunu öğrenelim.

HTTP Nedir?

HTTP (Hypertext Transfer Protocol) dilimize “Hipermetin Transfer Protokolü” olarak adlandırılır. HTTP protokolü ağ üzerinden web sayfalarının görüntülenmesini sağlayan protokoldür. Bu protokol client-server arasındaki alışveriş kurallarını belirler. Biz bu istekleri görmeyiz ancak arkaplanda kullanmış olduğumuz Web Browser’lar (Chrome,Mozilla,Edge vb.) bizim için bu istekleri gerçekleştirir.

HTTP Protokolü 80 portunu kullanır.

HTTP Metotlar

Request ve Response’ların kullanıldığı kısım burasıdır.

Request içerisinde Method (GET, POST vb.), Path (/), Version “Protokol Versiyonu” (HTTP/1.0 — HTTP/1.1) ve Header (Token, Date, Server, Language vb.) kısmlarından oluşur.

  • GET metodu belirtilen kaynağın bir temsilini ister. GET kullanan istekler yalnızca veri almalıdır.
  • POST metodu belirtilen kaynağa bir varlık (entity) göndermek için kullanılır, bu da genellikle sunucuda bir durum değişikliği ya da yan etkilere neden olur.
  • PUT metodu hedefte bulunan kaynağın tüm geçerli temsillerinin yerine istek yükünü (request payload) koyar. Mevcut URL’deki kaynağı, istekte bulunan kaynakla değiştirir. Sunucudaki bir kaynağın durumunu hem oluşturmak hem de güncellemek için kullanılır.
  • DELETE metodu belirtilen kaynağı siler.
  • PATCH metodu bir kaynağa kısmi değişiklikler uygulamak için kullanılır.

Referans

Temel olarak bu metotları bilmekte fayda var. Bunlar en çok kullandığımız ve kullanacağımız metotlar. Öyleyse hadi gelin bir de ne gibi hatalar ile karşılaşabiliriz, bize dönen hatalar ne anlama gelmekte az da olsa göz gezdirelim.

HTTP Durum (Status) Kodları

  • 1xx: Tarayıcı tarafından gönderilen isteğin sunucuya ulaştığını ve işlemin başladığını bildiren bilgilendirme kodlarını ifade eden durum kodlarıdır.
  • 2xx: Tarayıcı tarafından gönderilen isteğin sunucuya ulaştığını, anlaşıldığını ve başarılı olduğunu ifade eden durum kodlarıdır.
  • 3xx: Erişilmek istenen kaynağın başka bir kaynağa taşındığını ve bir yönlendirmenin söz konusu olduğunu ifade eden durum kodlarıdır.
  • 4xx: İsteğin yerine getirilemediğini, ilgili web sayfasına ya da web sitesine ulaşılamadığını ifade eden durum kodlarıdır.
  • 5xx: Tarayıcı tarafından gönderilen isteğin başarıyla sunucuya ulaştığını fakat sunucu tarafındaki sorunlar nedeniyle isteğin yerine getirilemediğini ifade eden durum kodlarıdır.

Referans

Demo API’ler kullanacağız ancak yine de bize hem bilgisayar dünyasında hemde Postman’de gerekecek olan HTTP Authentication’a kısaca değinip anlamaya çalışacağız ve ben örnek olarak Basic Auth’u anlatacağım.

HTTP Authentication Methods (HTTP Kimlik Doğrulama Metotları)

Bir kullanıcı veya programın (bir API’nin başka bir API’ye erişmesi gibi) varolan bir sisteme erişirken kim olduğunu kanıtlama işlemidir. Kimlik bilgilerimizi yetkili uygulamanın veritabanı veya bir veri doğrulama sunucusundaki kimlik bilgileriyle eşleşip eşleşmediğini kontrol ederek erişim kontrolü sağlayan bir yapıdır.

Size örnek verebilmem için bir Authentication yönteminden bahsetmek istiyorum.

Basic Authentication (Basic Auth)

Bu doğrulama türü adından da anlaşıldığı gibi basit bir kimlik doğrulama türüdür. Sizden bir kullanıcı adı ve parola ister Base64 formatında username ve password’u Encoding (veriyi formatlamak/kodlama) ederek bunu servera gönderiri, server bunu Decoding (formatı verileştirmek/kod çözme) ederek sizi doğrular. Encode ve Decode işleminin bir diğer amacı ise veriyi özel karakterlerden (! ? < > , $ ) arındırmaktır.

Mesela “memet” verisini encode ettiğimiz zaman “bWVtZXQ=” gibi bir format elde ederiz, tam tersini yapalım “bWVtZXQ=” formatını decode ettiğimiz zaman “memet” verisini elde ederiz. Aşağıda verdiğim adrese giderek bir kaç Encoding ve Decoding işemi gerçekleştirebilirsiniz.

Eğer bash kullanıyorsanız aşağıda basit Encode ve Decode scripti vardır.

Encode işlemi veriyi başka bir formata dönüştürür, şifreleme yapmaz. Decode ise bu gelen formatı veriye dönüştürür. Bu yüzden verilerimiz/formatlarımız taşınırken güvenlik katmanından geçmeli ve şifrelenmelidir.

Basic auth aslında bir başına güvensizdir, kırılması kolaydır. Bunun önüne geçilmesi için SSL (Security Socket Layer) ve TSL (Transport Layer Security)’e ihtiyacı vardır. HTTP olan adresler güvensizdir tarayıclar sizi uyarır. Herhangi bir veri alışverişinde bilginiz çalınabilir. SSL sonucu artık protokolümüz HTTPS olarak değişir.

Bazı şeyleri detaysız da olsa öğrenmiş olduk. Makalenin amacı zaten Postman’i anlatmak. Ama bu demek olmuyor ki detaylarını bilmeyeceğiz. Tabi ki bunları biraz daha detaylandırarak araştırmanız gerekiyor. Unutmayın bir şeyi öğrendiğiniz her zaman kullanabileceğiniz anlamına gelmez. O konuda tecrübeler edinmelisiniz. Ne kadar çok hata o kadar başarı. Yazımın devamında görüşmek üzere…

Yazının devamı için tıklayın.

--

--