Bileşik anahtarlara sahip bir kaynak URI'sı tasarlama hakkında bir sorum var.REST - bileşik anahtarlara sahip bir URI nasıl tasarlanır?
4 anahtar/ids'e sahip bir yük kaynağım var: iş ortağı kimliği, ilk zip kodu, son zip kodu ve ağırlığı.
Aslında benim kaynak veritabanı tarafından oluşturulan bir artan kimliğinin olması tasarlanmıştır, ancak bir tüketici/ortak yapmaları gereken bir yük bilgilerinizi güncellemeniz gerekiyorsa bu yaklaşım, örneğin API tüketicilere çok iyi değil edilmiştir:
?GET navlun initialZipcode = {DEĞER} & finalZipcode = {DEĞER} & ağırlık = {DEĞER}
operasyonun tepkisi yukarıdaki navlun kimliği olacağını, bu yüzden nihayet bilgi güncelleyebilirsiniz:
PUT navlun/{ID}
İş ortağı kimliği kimlik doğrulama mekanizması tarafından örtülüdür.
Bana göre, iş ortakları bilgileri güncellemeden önce navlun kimliğini elde etmek için tuhaf görünüyor.
Bu yüzden sorum şu: Bu URI'yi nasıl tasarlayabilirim?
PUT navlun/initialZipcode/{DEĞERİ}/finalZipCode/{DEĞERİ}/ağırlık/{DEĞERİ}
Yukarıda tasarımını dikkate almak mı?
Başka bir soru: partner kimliğini kimlik doğrulama mekanizmasına katmak için iyi bir uygulamadır? Artıları (tüketicilere kolay) ve eksilerini (önbellek, bir URI'yi paylaşma imkansızlığı vb.) Biliyorum, ancak genelde iyi veya kötü bir uygulama olup olmadığını bilmiyorum.
Teşekkürler!
PUT freight?initialZipcode={VALUE}&finalZipcode={VALUE}&weight={VALUE}
Sorgu parametreleri ile yanlış bir şey yok
Merhaba Darrel, cevabınız için teşekkürler. Benim için (ilk) yaklaşımınız garip görünüyor çünkü her zaman kullandığınız gibi bir sorgu parametresi olarak değil, ID kavramını kullanıyorum. Benim için sorgu parametreleri, belirli bir kaynaktaki ek seçenekleri belirler, örneğin: filter, search, sort, pagination, vb. Benim bir kaynak güncellemek için API'mda başka durumlar var ve tüm bu durumlarda os URI (yol parametresi), eğer güncellemenin parametrelerle olduğu başka bir durum varsa, birleşik arayüz kavramını incitmiş gibi hissediyorum. Yanlış mıyım? – Krock
@Krock RFC 3986, sorgu parametrelerinin kaynağın kimliğinin bir parçası olduğunu belirtir. Ekstra meta veriler değiller. Bu, URI özelliklerinin önceki sürümlerinden yapılan bir açıklamadır. http://tools.ietf.org/html/rfc3986#section-3.4 Bir istemci, URI'nin tamamını opak bir tanımlayıcı olarak ele almalıdır. –
Beni ikna ettiniz :) Ama yeni bir navlun yaratma durumunda? Yanıtı nasıl iade edebilirim? Bir ID ile yanıt, oluşturulan navlun için bir 'Yer' olur (örneğin: navlun/kimlik), ancak bir kimliğim yoksa cevabım nedir? Yüklenecek bir yer? InitialZipcode = {VALUE} & finalZipcode = {VALUE} & weight = {VALUE}? – Krock