SORU
8 NİSAN 2010, PERŞEMBE


Girdi olarak parametre değerleri listesini kabul etmeyi API en İyi uygulama DİNLENME:

Yeni bir REST API başlatıyoruz ve giriş parametreleri biçimlendirilmiş olmalı nasıl en iyi uygulamalar hakkında bazı topluluk giriş istedim:

Şu anda, bizim API JSON merkezli çok (sadece döner JSON). XML dönmek için istediğimiz olup olmadığı tartışması ayrı bir konudur.

API bizim çıkış JSON merkezli olarak, girişler biraz JSON merkezli bir yolda devam ediyoruz ve bu bazıları için uygun ama genel olarak tuhaf olabilir düşünüyorum.

Örneğin, birden fazla ürün çıkartmış olabilir birkaç ürün detayları almak için bir zamanlar şu anda olduğu gibi

http://our.api.com/Product?id=["101404","7267261"]

Bu gibi: basitleştirmek gerekir

http://our.api.com/Product?id=101404,7267261

Ya da JSON giriş kullanışlı olan mı? Bir acı daha mı?

Her iki stilleri kabul ama esneklik aslında daha fazla karışıklığa neden böyle bir şey yapar ve ağrıları (bakım, Dokümantasyon, vb.) baş etmemiz gerekebilir?

Daha karmaşık bir durum daha karmaşık giriş sunmak istiyoruz. Eğer birden çok arama filtreleri izin vermek istiyoruz, örneğin:

http://our.api.com/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}

Mutlaka bu gibi isimler isteği olarak filtre türleri (örneğin productType ve renk) koymak istemiyoruz:

http://our.api.com/Search?term=pumas&productType=["Clothing","Bags"]&color=["Black","Red"]

Tüm filtre giriş birlikte grup yapmak istedik çünkü.

Sonunda, bu gerçekten önemli mi? Giriş tipi o kadar önemli değil, orada çok JSON araçlarının olduğunu olabilir.

JavaScript müşterilerimize API AJAX arama yapmak JSON giriş hayatlarını kolaylaştırmak için takdir biliyorum.

CEVAP
7 ŞUBAT 2012, Salı


Bir Adım Geri

Birincisi ve en önemlisi, GERİSİ evrensel benzersiz KİMLİĞİ olarak bir URI açıklar. Bir çok kişi için URI daha fazla "" diğerlerine göre. dinlendirici hangi Kodu yapısı ve yakalanmakBu bağımsız değişken adlandırma biri o kadar gülünç.Bir URI başka bir şey değildirevrensel benzersizadı.

DİNLENME gözlerinde ?id=["101404","7267261"] ?id=101404,7267261 \Product\101404,7267261 daha rahat olup olmadığı hakkında tartışmak biraz abes.

Şimdi, URI kaç kere inşa edilir bunu söyledikten sonra genelde Huzurlu bir hizmeti diğer konular için iyi bir gösterge olarak hizmet verebilir. Genel olarak URI ve söz konusu kırmızı bayraklar bir çift vardır.

Öneriler

  1. Aynı kaynak ve Content-Location için birden fazla URI

    Her iki stilleri kabul ama esneklik aslında daha fazla karışıklığa neden böyle bir şey yapar ve ağrıları (bakım, Dokümantasyon, vb.) baş etmemiz gerekebilir?

    URI ID kaynakları. Her bir kaynak olmalıdırbirkurallı URİ. Bu aynı kaynak için iki URI nokta olamaz anlamına gelmezamaPeki bunu yaparken hakkında gitmek için yollar tanımlanmıştır. Eğer JSON ve liste tabanlı biçimleri (veya başka bir biçim) kullanmaya karar verirseniz, hangi ana karar vermeniz gerekirkurallıURİ. Diğer tüm cevaplar URI aynı noktaya "kaynak" Content-Location header içermelidir.

    İsim benzerliği, birden fazla URI olması ile yapıştırma için lakabı olması gibi bir şeydir. Eğer bir takma ad kullanıyorum Eğer hala muhtemelen tam adını bilmek istiyorum mükemmel kabul edilebilir ve bazen oldukça kullanışlı, ancak genellikle bu "resmi" o kişi bakın. Biri tam adı birisi bahseder zaman bu yol, "", olarak bakın aynı kişi onlar hakkında neler konuştuğunu biliyorum "Nick". Nichloas Telsa

  2. "URİ . arama

    Daha karmaşık bir durum daha karmaşık giriş sunmak istiyoruz. Eğer birden çok arama filtreleri izin vermek istiyoruz, örneğin...

    Benim başparmak genel bir kural, eğer URİ bir fiil varsa, bir şeyin olup olmadığını bir göstergesi olabilir. URI bir kaynak tanımlamak, ancak belirtmek gerekirnebu kaynak için yapıyoruz. HTTP ya da dinlendirici açısından, bizim işi"". üniforma arayüzü

    İsim benzerliği ölü yenmek için, bir URI bir fiil kullanarak onlarla görüşmek istiyorsan birinin adını değiştirmek gibi. Eğer Bob ile etkileşim içindeyim, Bob adını "BobHi söylemek istediğim zaman" ona Merhaba. yakışmıyor İstediğimiz zaman benzer şekilde, "arama" Ürünler, URİ yapımızı değiştirmek gerekmez mi "/Product/..." "/Arama/...".

İlk Sorunuza Cevap

  1. İlgili ["101404","7267261"] Galatasaray 101404,7267261: Benim önerim burada önlemek için JSON sözdizimi için kolaylık (yani yok iste senin kullanıcılara URL kodlama yok gerçekten. API biraz daha kullanışlı hale getirecek. Diğerleri önerilen gibi, daha iyisi, muhtemelen son kullanıcılar için en tanıdık olacak gibi application/x-www-form-urlencoded standart biçimi (*örneğin 19*). "Güzel", ama Oldukça URI gerekli değildir anlamına gelmez Kullanılabilir URI. GERİSİ hakkında konuşurken, ancak, benim ilk nokta olsa yinelemek, sonuçta, önemli değil. Yaşamak çok ağır.

  2. Karmaşık arama URİ senin örnek çok aynı şekilde ürün örnek olarak çözülmüş olabilir. Zaten çok aşina olan bir standart olduğu gibi yine application/x-www-form-urlencoded biçimi gidiyor tavsiye ederim. Ayrıca, iki birleştirme tavsiye ederim.

Eğer URİ...

/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}    

Eğer URİ URİ kodlanmış sonra...

/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}

Dönüştürülebilir...

/Product?term=pumas&productType[]=Clothing&productType[]=Bags&color[]=Black&color[]=Red

URL kodlama ihtiyacını kaçınarak ve işler biraz daha standart bir görünüm yapmak bir yana, şimdi API biraz homogenizes. Eğer kullanıcı (her ikisi de, bir tek "kaynak" Huzurlu açısından), /Product/... URI istiyor. düşünülen ürün ya da Ürün Listesini almak istiyorsanız o bilir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hanksranger

    hanksranger

    6 EKİM 2009
  • jonathepianist

    jonathepiani

    31 Temmuz 2008
  • TokShogun

    TokShogun

    6 HAZİRAN 2009