GET ve POST isteklerini duymuş olabilirsiniz, ancak bunlar sadece başlangıç.
Her HTTP isteği, temel amacını açıklamak için bir yöntem kullanır. Her yöntemin, bir web sayfasını getirmekten bir kaynağı silmeye kadar değişen görevler için belirli kullanımları vardır. GET ve POST en tanıdık ikisidir, ancak yedi tane daha vardır.
Bu kavram ve olası dokuz HTTP yönteminin her birinin ne için olduğu hakkında bilgi edinin.
HTTP Yöntemi Nedir?
Yaptığınız her HTTP isteği, bir nesne görevi gören bir fiil ve isim gibi, bir eylem ve bu eylem için bir hedef içerir.
URL, isteğin hedefi olarak hareket eden benzersiz bir kaynağı tanımlar. Bu arada, söz konusu URL'de hangi eylemin gerçekleştirileceği fiili bir yöntemle temsil edilir.
Bir HTTP isteğinin ilk satırı, HTTP sürümü, kaynak URL'si ve istek yöntemi dahil olmak üzere en önemli bilgileri sağlar:
/software/htp/cigs/index.html HTTP/1.1'i ALIN
9 HTTP Yöntemi Nedir?
İlk dört yöntem, CRUD modelindeki dört eylemin eşdeğeridir: Oluştur, Oku, Güncelle ve Sil. İlgili HTTP yöntemleri şunlardır: POSTALAMAK, ELDE ETMEK, KOYMAK, Ve SİLMEK.
ELDE ETMEK
Web'de gezinirken ve bağlantıları tıklarken veya bir API aracılığıyla veri isterken göndereceğiniz en yaygın, varsayılan istek. Sunucu, kaynağı yanıt gövdesinde döndürmelidir.
POSTALAMAK
Yeni kaynaklar oluşturmak için, özellikle de bu kaynakların tanımlanabilir bir üst kaynağı olduğunda, POST'u kullanın. Örneğin, bir /clients kaynağınız varsa, gerekli verileri /clients'e POST yaparak yeni bir client oluşturmalısınız.
KOYMAK
Mevcut bir kaynağı güncelleyin veya değiştirin. Bu, POST'a benzer, ancak kaynak için benzersiz bir tanımlayıcı seçmekten müşteri sorumludur. PUT kullanarak bir kaynak oluşturmak için kaynak URL'si bir tanımlayıcı içermelidir, örneğin, /clients/007.
SİLMEK
URL'de belirttiğiniz kaynağı silmek için bu yöntemi kullanın. Tüm HTTP yöntemleri gibi, destek sunucuya bağlıdır. Açıkça riskli olsa da, herkesin bir kaynağı silmesine izin verebilir. DELETE'i destekleyen bir sunucu genellikle Kimlik doğrulama ve yetkilendirme.
Diğer iki yöntem, yukarıdakilere göre küçük farklılıklar sağlar: YAMA Ve KAFA. Belirli API'leri kullanırken veya kendi API'nizi oluştururken bunları yararlı bulabilirsiniz.
YAMA
PATCH yöntemi, mevcut bir kaynağı yalnızca kısmi verilerle günceller. Başka bir deyişle, yeni kaynağın tam temsilini sağlamanız gerekmez, yalnızca güncellemeniz gereken alanları sağlamanız gerekir.
KAFA
HEAD isteği, bir kaynak hakkında bilgi istediğiniz, ancak kaynağın kendisi hakkında bilgi istemediğiniz durumlar içindir. Yanıt bir gövde içermeyecek, ancak bir dizi yararlı HTTP başlığı içerecektir. Bir dosyanın toplam boyutunu indirmeden önce Content-Length yanıt başlığı aracılığıyla öğrenebilirsiniz.
Kalan yöntemler—SEÇENEKLER, BAĞLAMAK, Ve İZ— daha belirsizdir. Meta veriler, ağ oluşturma ve sorun giderme ile ilgilenirler. Bunları belirli programlama türlerinde yararlı bulabilirsiniz, ancak muhtemelen her gün kullanmayacaksınız.
SEÇENEKLER
Bir sunucu, kaynağın gerçekte hangi HTTP yöntemlerini desteklediğini söyleyerek bu yönteme yanıt vermelidir. Bu keşif için faydalı olabilir.
BAĞLAMAK
Bazı ağ yazılımı türleri, iki bilgisayar arasında bir tünel oluşturmak için bu yöntemi kullanabilir. Bu genellikle bir proxy aracılığıyla bir HTTPS bağlantısı başlatmak için kullanılır.
İZ
Bu yöntem sorun giderme için kullanışlıdır. Sunucu, aldığında yanıt gövdesinde aldığı isteği geri göndermelidir. Yöntem, ara makinelerin isteğin herhangi bir ayrıntısını değiştirip değiştirmediğini kontrol etmek için bir mekanizma sağlar.
GET ve HEAD, her genel web sunucusunun desteklediği tek iki yöntemdir. Belirli bir sunucu diğer yöntemleri destekleyebilir veya desteklemeyebilir, bu nedenle önce kontrol etmelisiniz.
Bu Yöntemleri Ne Zaman Kullanabilirsiniz?
Çoğu zaman, HTTP yöntemleri sizin için şeffaf olacaktır. Ancak, bir web sayfasına form eklerseniz veya bir API kullanırsanız bunları göz önünde bulundurmanız gerekir.
HTML'de HTTP Yöntemleri
bu biçim elementler yöntem niteliği, form gönderildiğinde kullanılacak HTTP yöntemini ayarlamanıza olanak tanır. HTML yalnızca şunları destekler: postalamak Ve elde etmek bu öznitelik için değerler ve belirsiz bir diyalog alternatifi.
<biçimyöntem="postalamak">
...
biçim>
gibi özellikleri kullanabilirsiniz. Chrome'un Geliştirici Araçları görüntülemek için Ağ trafik ve tarayıcınızın belirli bir istek için gönderdiği yöntemi onaylayın. Genellikle sunucudaki verileri güncelledikleri için çoğu web formunun bir POST göndereceğini unutmayın. Bununla birlikte, birçok arama formu, verileri değiştirmeden basitçe getirdikleri için GET'i kullanır.
POST verileri URL'nin bir parçası olmadığı için, onu bir GET yoluyla göndermenizden daha özeldir. Veriler, teorik olarak bir saldırganın onu engelleyebileceği talebin gövdesinde hâlâ mevcuttur. Ancak HTTPS yoluyla veri göndermek bu sorunu azaltmalıdır.
GET istekleriyle asla bir kullanıcı girişi uygulamamalısınız. Oturum açma, bir oluşturma veya güncellemeden çok bir okuma işlemi gibi görünse de, verileri güvenceye almak için yine de POST kullanmanız gerekir.
HTML formları yalnızca GET ve POST'u desteklediğinden, örneğin sunucudaki bir kaynağı silen bir formu doğrudan oluşturamazsınız. Sunucudaki REST ilkelerine uyan yaygın bir geçici çözüm, bir yer tutucu değişken kullanmak ve orijinal HTTP yöntemiymiş gibi davranmaktır. Örneğin:
<biçimyöntem="postalamak">
<giriştip="gizlenmiş"isim="_yöntem"değer="SİLMEK" />
...
biçim>
Sunucu tarafı kodunuz, bu "proxy yöntemi" değişkeninin varlığını kontrol edebilir ve ona, kullanılan gerçek yöntemmiş gibi davranabilir. Örneğin, PHP'de:
$yöntem = $_SERVER["REQUEST_METHOD"];
eğer (dizi_anahtar_var("_yöntem", $_REQUEST)) {
$yöntem = $_REQUEST["_yöntem"];
}
HTTP İsteklerini Programlı Olarak Gönderme
Web Fetch API, bir HTTP isteği göndermek için kullanabileceğiniz bir fetch() JavaScript işlevi sağlar. Yalnızca HTML'nin desteklediği GET ve POST'u değil, tüm yöntemleri destekler.
Getirme işlevi, varsayılan olarak bir GET isteği gönderir. Farklı bir yöntem kullanmak için, adını bir değer olarak belirtin. yöntem özelliği, ikinci bağımsız değişken olarak gönderdiğiniz bir nesnede.
gidip getirmek(' https://example.com/', { yöntem: "KAFA" });
PHP de dahil olmak üzere birçok sunucu tarafı dilden HTTP istekleri de gönderebilirsiniz. Bu dilde curl kitaplığı, bu tür istekleri göndermenin yaygın bir yoludur.
Kıvrılma kitaplığında, bir yöntem belirtmek için ayarlayabileceğiniz bir CURLOPT_CUSTOMREQUEST seçeneği vardır.
eğer ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'KOYMAK');
curl_exec($ch);
// ...
}
Komut Satırı aracılığıyla
curl komut satırı aracı birkaç protokolden biri aracılığıyla bir sunucuya veya sunucudan veri aktarmanıza olanak tanır. HTTP (ve HTTPS) çok yaygın iki kullanım durumudur.
Aşağıdaki komutla onaylayabileceğiniz gibi, varsayılan olarak curl bir GET isteği gönderir:
curl -v -s -o /dev/null example.com/get-test
Çıktının beşinci satırında istek yöntemini görebilirsiniz:
Curl'ün -X işaretini kullanarak gönderdiği istek yöntemini değiştirebilirsiniz:
curl -v -s -o /dev/null example.com/get-test -X POST
Şimdi curl, POST yöntemini kullanarak bir istek gönderir:
HTTP'nin Birçok Kullanımı Vardır
Web'de yaptığınız çoğu şey, standart GET isteklerini ve ara sıra form gönderimleri için POST'u içerecektir. Ancak HTTP, bunun önerdiğinden çok daha anlamlı bir protokoldür.
En yaygın yöntemlerden bazıları, HTTP'yi kaynak odaklı bir API oluşturmak için mükemmel bir temel haline getiren CRUD modelini yansıtır.