Httpie Paketi Kullanımı

Hemen kurulumunu yapabileceğiniz bu paket ile terminalden http istekleri atabilirsiniz. Bir önceki yazımda Silver Searcher paketini anlatmış ve Yazılımcı Grep’i demiştim. Bu httpie paketi ise daha kolay curl kullanımı sağlıyor yani buna da Yazılımcı Curl’ü diyelim.

Kurulum

sudo apt-get install httpie

komutu ile bilgisayarınıza kurabilirsiniz.

Kullanımı

Bu eklentiyi http komutu ile kullanacağız. Ben istek atarken http://httpbin.org/ sitesini kullanacağım. Bu site http istek ve cevaplarınızı kontrol etmek için basit bir servis.

http GET https://httpbin.org/get

Bu komut ile https://httpbin.org/get adresine http GET isteği göndermiş oluyoruz.

http POST https://httpbin.org/post kullanici=sinan sifre=qwerty

Bu komut ile de POST isteği gönderiyoruz ve kullanici , sifre parametlerini de düzenleyebiliyoruz. Buraya farklı parametreler de girebilirsiniz size kalmış. Bu komut bize şöyle birşey dönecek.

{
    "args": {},
    "data": "{\"kullanici\": \"sinan\", \"sifre\": \"qwerty\"}",
    "files": {},
    "form": {},
    "headers": {
        "Accept": "application/json",
        "Accept-Encoding": "gzip, deflate",
        "Connection": "close",
        "Content-Length": "41",
        "Content-Type": "application/json",
        "Host": "httpbin.org",
        "User-Agent": "HTTPie/0.9.2"
    },
    "json": {
        "kullanici": "sinan",
        "sifre": "qwerty"
    },
    "origin": "78.191.118.193",
    "url": "https://httpbin.org/post"
}

json kısmında dikkat ederseniz kullanici ve sifre bilgileri gönderilmiş. Aynı şekilde

http PUT https://httpbin.org/put productId=2000 stock=59

komutu ile PUT isteği atabilirsiniz. Ben productId ve stock parametresi de geçtim. DELETE yazarsanız da aynı şekilde DELETE isteği atabilirsiniz.

http GET https://httpbin.org/get page==2

Burada ise query parametresi gönderdim, dikkat ettiyseniz page==2 yazdım yani iki tane eşittir koydum. Cevap olarak şöyle birşey dönecek bana.

{
    "args": {
        "page": "2"
    },
    "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Connection": "close",
        "Host": "httpbin.org",
        "User-Agent": "HTTPie/0.9.2"
    },
    "origin": "78.191.118.193",
    "url": "https://httpbin.org/get?page=2"
}

Dikkat ettiyseniz url kısmında https://httpbin.org/get?page=2 yazıyor yani gönderdiğim query parametresi başarıyla gönderilmiş.

http GET https://httpbin.org/get kategori==apple producName=="Iphone 6S 64 GB"

Gibi tırnak işareti de kullanabilirsiniz. Yani gönderdiğiniz query parametresi uzun birşey de olabilir sonuçta.Şimdi de header bilgilerini manipüle edelim.

http GET https://httpbin.org/get User-Agent:sinanerdincBrowser

şeklinde bir komut yazdım, bunda ise : simgesini kullandım ve User-Agent bilgisini değiştirdim. Cevap olarak bana şöyle birşey dönecek.

{
    "args": {},
    "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Connection": "close",
        "Host": "httpbin.org",
        "User-Agent": "sinanerdincBrowser"
    },
    "origin": "78.191.118.193",
    "url": "https://httpbin.org/get"
}

Hemen headers içindeki User-Agent alanına baktım ve başarıyla sinanerdincBrowser olduğunu görebiliyorum. Eğer sizin API’niz form kabul ediyorsa;

http --form POST https://httpbin.org/post kullanici=sinan sifre=qwerty

Şeklinde –form parametresini kullanarak form şeklinde gönderebilirsiniz.

Bazen istek attığınız sayfa başka bir yere yönlenmiş olabilir. O zaman eğer yönlenen adresi takip etmesini söylemezseniz hata alırsınız.

http GET httpbin.org/redirect/3

Burda httpbin.org/redirect/3 adresine istek attım.Bu sayfa 3 kere yönlenecek. Eğer böyle bir istek atarsam

<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="/relative-redirect/2">/relative-redirect/2</a>.  If not click the link.

şeklinde cevap döner ama ben yönlendirmeleri takip etsin ve en son yönlendirmeler bitince istek atsın istiyorum. O zaman da –follow parametresini kullanmam gerek.

http --follow httpbin.org/redirect/3

şeklinde. Standart olarak 30 yönlendirmeyi takip eder, bunu değiştirmek isterseniz ise –max-redirects=5 parametresi eklemeniz gerek. 5 yerine sınırlamak istediğiniz değeri girin.

Eğer SSL bağlantılı bir sayfaya istek atmak isterseniz, SSL doğrulamasını geçmek için

http GET --verify=no https://example.org

şeklinde –verify=no parametresini ekleyebilirsiniz.

İstek attıktan sonra dönen cevap içerisinde sadece headers alanını görmek isterseniz –headers , sadece body alanını görmek isterseniz –body , attığınız ve dönen istekleri detaylı görmek için ise –verbose komutunu eklemeniz gerekir.

http --headers GET httpbin.org/get

şeklinde.

Bu modül pipe yapma imkanı da tanıyor. Mesela https://jsonplaceholder.typicode.com/posts/1/comments adresindeki verileri http://httpbin.org/post adresine post etmek istiyoruz.

http GET https://jsonplaceholder.typicode.com/posts/1/comments | http POST http://httpbin.org/post

şeklinde yapabiliriz.

echo '{"name":"Sinan"}' | http POST http://httpbin.org/post

gibi de yapabiliriz.

Bir dosyayı bilgisayarımıza indirmek istersek

http --download --output=yorumlar.json http://jsonplaceholder.typicode.com/posts/1/comments

komutunu kullanıyoruz. http://jsonplaceholder.typicode.com/posts/1/comments dosyasını bulunduğunuz klasöre yorumlar.json olarak indirecektir.