HTTP Metodu
- İngilizcesi
- HTTP Method
- Türkçe karşılığı
- HTTP yöntemi
Günlük kullanımda iki ad da yaygın.
Kısaca
HTTP metodu, bir HTTP isteğindeki GET, POST, PUT, PATCH veya DELETE gibi fiildir ve sunucuya istenen kaynak üzerinde hangi eylemin yapılacağını söyler.
HTTP metotları nelerdir?
Her HTTP isteği bir metotla başlar; bu, istemcinin niyetini belirten kısa bir sözcüktür ve ardından bir kaynağın URL'si gelir. GET /users/42 bir kullanıcıyı okumayı, DELETE /users/42 ise onu kaldırmayı ister. Metot, sunucuların, önbelleklerin, proxy'lerin ve tarayıcıların bir isteğin içeriğine bakmadan ne yapacağını anlamasını sağlar.
En çok kullanacağınız beş metot şunlardır: veriyi getiren ve hiçbir şeyi değiştirmemesi gereken GET; bir kaynak oluşturmak ya da bir eylemi tetiklemek için veri gönderen POST; bir kaynağı gönderilen veriyle tamamen değiştiren PUT; kısmi bir güncelleme uygulayan PATCH; ve bir kaynağı kaldıran DELETE. Daha az görünür olanlar arasında GET gibi çalışıp yalnızca başlıkları döndüren HEAD ve bir sunucunun nelere izin verdiğini soran, tarayıcıların CORS preflight isteği olarak gönderdiği OPTIONS yer alır. REST API'lerde bu metotlar CRUD işlemleriyle örtüşür.
Metotlar iki özelliğe göre sınıflandırılır. Güvenli (safe) bir metot (GET, HEAD, OPTIONS) sunucu durumunu değiştirmez; bu yüzden tarayıcılar bağlantıları önceden yükleyebilir ve önbellekler yanıtları saklayabilir. Idempotent bir metot (güvenli olanlar artı PUT ve DELETE) bir kez ya da birkaç kez gönderilmesi fark etmeksizin aynı etkiye sahiptir; dolayısıyla bir istemci onu zaman aşımından sonra yeniden deneyebilir. POST ve PATCH'in ise idempotent olması garanti edilmez ve yeniden denendiğinde kopyalar oluşturabilirler. Metodu bir cümlenin fiili, URL'yi de nesnesi olarak düşünün: 'bu kullanıcıyı getir', 'şu siparişi sil'.
HTTP metotları bazen HTTP durum kodlarıyla karıştırılır. Metodu istekte istemci seçer; 200 veya 404 gibi bir durum kodunu ise yanıtta sunucu seçer. Yaygın bir hata, GET /delete-account gibi veriyi değiştiren eylemler için GET kullanmaktır; tarayıcı botları, bağlantı önizlemeleri veya önceden yükleme bunları yanlışlıkla tetikleyebilir. Bir GET isteğindeki veri de URL'nin sorgu dizesinde (query string) taşınır ve orada loglanır ve önbelleğe alınır; dolayısıyla hassas veriler bir POST'un gövdesinde yer almalıdır.
Önemli noktalar
- Metot, bir HTTP isteğinin fiilidir;
GET,POST,PUT,PATCHveyaDELETEgibi. GETokur,POSToluşturur ya da eylem tetikler,PUTdeğiştirir,PATCHkısmen günceller veDELETEkaldırır.- Güvenli metotlar sunucu durumunu değiştirmez; idempotent metotlar güvenle tekrarlanabilir.
OPTIONSCORS preflight istekleri için kullanılır,HEADise yalnızca başlıkları getirir.- Veriyi değiştiren eylemler için asla
GETkullanmayın.
Örnek
# Read a resource
curl https://api.example.com/tasks/7
# Create a resource (the server usually replies 201 Created)
curl -X POST https://api.example.com/tasks \
-H "Content-Type: application/json" -d '{"title": "Write report"}'
# Partially update it, then delete it
curl -X PATCH https://api.example.com/tasks/7 \
-H "Content-Type: application/json" -d '{"done": true}'
curl -X DELETE https://api.example.com/tasks/7
# Ask only for the headers (a HEAD request)
curl -I https://api.example.com/tasks/7Sık sorulan sorular
Kaç tane HTTP metodu vardır?
Çekirdek HTTP standardı olan RFC 9110 sekiz tanesini tanımlar: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS ve TRACE; PATCH ise ayrı bir RFC'de tanımlanmıştır. Çoğu API bunların yalnızca beşini kullanır.
GET isteğinin gövdesi olabilir mi?
HTTP standardı, bir GET isteğindeki gövdeye tanımlı bir anlam vermez ve birçok sunucu, proxy ve kütüphane onu yok sayar veya reddeder; bu yüzden GET parametrelerini sorgu dizesine koyun. Karmaşık okuma sorguları için API'ler genellikle POST kullanır; gövde gerektiren güvenli istekler için de yeni bir QUERY metodu önerilmiştir.
HTTP metotları büyük/küçük harfe duyarlı mıdır?
Evet. Metot adları büyük/küçük harfe duyarlıdır ve standart olanlar her zaman GET ve POST gibi büyük harfle yazılır.
İlgili sayfalar
- HTTPWeb Geliştirme, s. 20HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldür.
- REST APIBackend ve API'ler, s. 38REST API, verileri URL'lerle tanımlanan kaynaklar olarak sunan ve istemcilerin onları standart HTTP metotlarıyla okuyup değiştirmesini sağlayan web API'sidir.
- IdempotencyBackend ve API'ler, s. 23Idempotency, bir işlemin bir kez de çalışsa çok kez de çalışsa aynı sonucu üretmesi özelliğidir; böylece bir isteğin yanlışlıkla tekrarlanması güvenli olur.
- CRUDBackend ve API'ler, s. 9CRUD, oluşturma, okuma, güncelleme ve silmenin kısaltmasıdır; veritabanı, API ve çoğu iş uygulamasında saklı verilerle çalışmanın dört temel işlemidir.
- HTTP Durum KoduWeb Geliştirme, s. 22HTTP durum kodu, sunucunun her yanıtla gönderdiği ve isteğin başarılı mı, başarısız mı olduğunu ya da ek işlem mi gerektirdiğini bildiren üç haneli sayıdır.
- CORSWeb Geliştirme, s. 9CORS, bir sunucunun JavaScript'ten istek yapan hangi diğer sitelerin yanıtlarını okuyabileceğini bildirmesini sağlayan tarayıcı güvenlik mekanizmasıdır.
- HTTP BaşlığıWeb Geliştirme, s. 21HTTP başlığı, bir HTTP isteği ya da yanıtıyla gönderilen ad-değer satırıdır; içerik türü, önbellek kuralları ya da kimlik bilgileri gibi ayrıntıları taşır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin