Httpie http isteklerinizi komut satırı ile kullanabilmenizi sağlayan bir araçtır. Curl aracına benzemektedir, kullanım kolaylığı ve esnek yapısı sebebiyle temel araçlarım arasına girmeyi başarmıştır.
Httpie Kurulumu
# Debian, Ubuntu, etc. $ apt install httpie
# Fedora $ dnf install httpie
# CentOS, RHEL, ... $ yum install httpie
# Arch Linux $ pacman -S httpie
# Windows (Python 3.6 veya daha üstü gerekir.) $ pip install --upgrade pip setuptools $ pip install --upgrade httpie
# MacOS $ brew install httpie
Httpie Kullanımı
Syntax yapısı:
http [flags] [METHOD] URL [ITEM [ITEM]]
En basit hali ile:
Herhangi bir parametre belirtmediğimiz için sunucuya GET kullanarak istek atıyor.
http https://httpie.org/hello
GET İsteği Atma:
http GET https://httpbin.org/get details==12
{
"args": {
"details": "12"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "HTTPie/2.1.0",
"X-Amzn-Trace-Id": "Root=1-5ea85602-2dc02d5cfce569707e021a6b"
},
"url": "https://httpbin.org/get?details=12"
}
Görüldüğü üzere yollamış olduğumuz değerler başarıyla iletdi. Eğer post isteği atmak istersek değeri atarken tek eşittir kullanmalıyız oda şu şekilde olacak.
POST İsteği Atma:
http POST https://httpbin.org/post username=admin password=1234
{
"args": {},
"data": "{\"username\": \"admin\", \"password\": \"1234\"}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json, */*;q=0.5",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "41",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "HTTPie/2.1.0",
"X-Amzn-Trace-Id": "Root=1-5ea8565f-5fb7e3304fb4827eaa71ebdd"
},
"json": {
"password": "1234",
"username": "admin"
},
"url": "https://httpbin.org/post"
}
Post isteğini forum şekilinde atmak istersek –form parametresini eklemeliyiz.
http --form POST https://httpbin.org/post username=admin password=1234
PUT ve DELETE istegi atma:
http PUT https://httpbin.org/put fiyat=500 satis=88
http DELETE https://httpbin.org/put fiyat=500 satis=88
#PUT İsteği
{
"args": {},
"data": "{\"fiyat\": \"500\", \"satis\": \"88\"}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json, */*;q=0.5",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "31",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "HTTPie/2.1.0",
"X-Amzn-Trace-Id": "Root=1-5ea85740-81ae46c2870d9b1241ec0674"
},
"json": {
"fiyat": "500",
"satis": "88"
},
"url": "https://httpbin.org/put"
}
User-Agent bilgisini değiştirmek istersek eğer oda şu şekilde oluyor.
http GET https://httpbin.org/get User-Agent:dilekcibrowser
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "dilekcibrowser",
"X-Amzn-Trace-Id": "Root=1-5ea85875-31192a88e1ca7a3f5d0f9b09"
},
"url": "https://httpbin.org/get"
}
- Eğer local’de çalışıyor veya geçersiz sertfika uyarısını geçmek istiyorsak –verify=no parametresi ekliyoruz.
- Eğer sayfada bir yönlendirme varsa –follow parametresi ekleyerek istek attığımız sayfayı takip etmesini sağlıyoruz.
http --verify=no –-follow https://httpie.org/hello
Http isteği ile sadece Header kısmını yanıt olarak istiyorsak –headers. Body alanını istiyorsak –body istek ve yanıtların hepsini görmek istiyorsak –verbose komutunu kullanıyoruz.
http --headers httpbin.org/headers
Http isteği ile Header kısmına değer eklemek istiyorsak. Head : Değer şekilde tanımlama yapıyoruz.
http httpbin.org/headers Burasi:Turkey
{
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Burasi": "Turkey",
"Host": "httpbin.org",
"User-Agent": "HTTPie/2.1.0",
"X-Amzn-Trace-Id": "Root=1-5ea86aa6-50703f4e7fc148822f642dd4"
}
}
Bir sayfadan verileri alıp başka bir sayfaya POST etmek istiyorsak.
http GET https://api.github.com/repos/jakubroztocil/httpie | http POST httpbin.org/post
Bir dosyayı veya sayfayı indirmek istersek.
http --download https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-desktop-amd64.iso
İndireceğimiz dosyayı farklı bir isimle indirmek istersek. –output metodunu kullanabiliriz.
http --download https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-desktop-amd64.iso --output acbd.iso
Dosya inerken duraklatmayı veya bağlantı kesilip tekrar bağlandığında, indirme işlemini devam ettirebilen sunucularda bu özelliği (HTTP/1.1 206 Partial Content) kullanmak istersek. –output ve –continue methodunu birlikte kullanarak bu işlemi gerçekleştirebiliriz.
http --download https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-desktop-amd64.iso --output acbd.iso --continue
HTTP/1.1 206 Partial Content Accept-Ranges: bytes Connection: Keep-Alive Content-Length: 2093350912 Content-Range: bytes 33193984-2126544895/2126544896 Content-Type: application/x-iso9660-image Date: Tue, 28 Apr 2020 20:25:11 GMT ETag: "7ec08000-59db0419bf607" Keep-Alive: timeout=5, max=100 Last-Modified: Mon, 03 Feb 2020 18:40:24 GMT Server: Apache/2.4.29 (Ubuntu) Downloading 1.98 GB to "acbd.iso" / 2.03 % 41.19 MB 1.42 MB/s 0:23:19 ETA
Httpie aracınının başlıca özelliklerini bu yazımızda görmüş olduk eğer daha fazla bilgi istiyorsanız, Httpie aracının dökümasyon sayfasına burdan bakabilirsiniz.