Bir REST API'sinin istek bölümünde özel HTTP üstbilgilerini ne zaman kullanırsınız?
Misal:
Hiç kullanır mısın
GET /orders/view
(custom HTTP header) CLIENT_ID: 23
onun yerine
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
Bir REST API'sinin istek bölümünde özel HTTP üstbilgilerini ne zaman kullanırsınız?
Misal:
Hiç kullanır mısın
GET /orders/view
(custom HTTP header) CLIENT_ID: 23
onun yerine
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
Yanıtlar:
URL, kaynağın kendisini gösterir. Bir "müşteri" böylece taban url parçası olmalıdır, ona göre hareket edilebilen bir kaynaktır: /orders/view/client/23
.
Parametreler sadece kaynağa erişimi parametreleştirmek içindir. Bu, özellikle mesajların ve aramalarla devreye giriyor: /orders/find?q=blahblah&sort=foo
. Parametreleri ve alt kaynaklar arasında ince bir çizgi vardır: /orders/view/client/23/active versus /orders/view/client/23?show=active
. Alt kaynak stilini ve aramalar için yedek parametreleri öneririm.
Her uç nokta bir Durum Aktarımını (anımsatıcıyı karıştırmak için) temsil ettiğinden, özel başlıklar yalnızca kaynağın adını (url), kaynağın durumunu (gövde) veya doğrudan parametreleri içermeyen şeyler için kullanılmalıdır. kaynağı etkileyen (parametreler). Bu, özel üstbilgi isteği hakkında gerçek meta verileri bırakır.
HTTP, ihtiyacınız olan her şeyi kapsayan çok çeşitli başlıklara sahiptir. Özel başlıkların ortaya çıktığını gördüğüm yer, bir kullanıcı adına çalışan sistem isteği sistemidir. Proxy sistemi kullanıcıyı doğrular ve X-User: userid
başlıklara " " ekler ve uç noktaya ulaşmak için sistem kimlik bilgilerini kullanır. Alıcı sistem, sistem kimlik bilgilerinin kullanıcı adına hareket etme yetkisine sahip olduğunu doğrular, ardından kullanıcının eylemi gerçekleştirmeye yetkili olduğunu doğrular.
Özel başlıklar aşağıdaki avantajlara sahiptir:
Standart veya kurallara göre bilgi aktarmanın başka bir yolu olmadığında yalnızca özel bir başlık kullanırdım. Darren102, bu değeri aktarmanın tipik yolunu açıklıyor. Api'niz, özel başlıklar kullanarak tipik kalıp dizeleri kullanarak çok daha kolay olacaktır.
REST API'nin istek bölümünde ... HTTP başlıklarını ne zaman kullanıyorsunuz?
Kimlik doğrulama: GUID'ler, temel kimlik doğrulama, özel belirteçler, vb. Örneğin, kullanıcı adı / parola yerine REST api için Guid belirteci ile Temel Kimlik Doğrulama
PCI-DSS veya diğer güvenlik kuralları tarafından kapsanan etki alanları arasında belirteçleri veya kimlik doğrulama benzeri diğer bilgileri geçirmeye dahil olursanız, parametreleri de gömmeniz gerekebilir çünkü bazı düzenlemeler, kimlik doğrulama öğelerinin, önemsiz şekilde yeniden oynatılabilecek URL'lerin dışında kalmasını açıkça gerektirebilir. tarayıcı geçmişleri, proxy günlükleri vb.).
Herhangi bir proxy'nin bunları aktarıp aktarmayacağını bilmediğiniz için özel başlıkları kullanmam. URL tabanlı, gitmenin yoludur.
GET / siparişler / görüntüle / müşteri / 23
Kesinlikle tamam:
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
Ayrıca tamam:
GET /orders/view/23 or
Bunun da sorun olmayacağını düşünüyorum:
POST /orders/view
(custom HTTP header) CLIENT_ID: 23
Zarflamanın iyi bir uygulama olmadığını göz önünde bulundurarak, kısmen işlenmiş bir istek hakkında daha fazla bilgi eklemek için özel üstbilgileri kullanabilirsiniz . Başlıklar güvenlidir .