SORU
24 EKİM 2009, CUMARTESİ


Nasıl fiiller olmadan huzur URL oluşturmak için?

Dinlendirici URL tasarım belirlemek için mücadele ediyorum. İsimleri, URL kullanarak dinlendirici bir yaklaşım varım ve fiiller bu nasıl anlamıyorum.

Finansal hesap makinesi uygulamak için bir servis oluşturuyoruz. Hesap makinesi CSV dosyası ile karşıya olacağız parametreleri bir sürü alır. Kullanım durumları içerecektir:

  1. Yükle yeni parametreleri
  2. En son parametreleri
  3. Belirli bir iş için tarih parametreleri
  4. Parametreleri bir dizi etkin hale getirmek
  5. Parametreleri doğrulamak

Dinlendirici bir yaklaşım URL: aşağıdaki tip olurdu sanırım

/parameters
/parameters/12-23-2009

İlk üç kullanım durumları ile elde edebiliriz:

  1. Parametre post isteğini dosyasını dahil nereye POST
  2. İlk URL OLSUN
  3. İkinci URL OLSUN

Ama nasıl bir fiil olmadan 4 ve 5 kullanmak durumunda yaparsınız? Gibi URL ihtiyacınız olmaz

/parameters/ID/activate
/parameters/ID/validate

??

CEVAP
25 EKİM 2009, Pazar


İyi URİ tasarımı için genel ilkeler:

  • Yoksorgu parametreleri durumu değiştirmek için kullanın
  • Yokeğer yardımı olacaksa karışık durumda yolları kullanın; küçük iyisidir
  • Yoksenin URI uygulama-özel uzantıları (.php, .py, .pl, vb.)
  • Yoksenin URI RPC girer
  • Yapınmümkün olduğu kadar URİ alanı sınırı
  • Yapınyol parçalarını kısa tutun
  • Yapınya /resource /resource/; kullanmadığınız bir 301 yeniden yönlendirmeleri oluşturmak tercih ederim
  • Yapınbir kaynağın alt seçimi için sorgu parametreleri kullanmak; yani sayfa, arama sorguları
  • Yapınbir HTTP üstbilgi veya bir vücut olması gereken URİ filan taşıyın

(Not: bir şey demedim "Huzurlu URİ tasarımı"; URI devamında aslında opak.)

HTTP yöntemi seçimi için genel ilkeler:

  • Yokhiç kullanım durumu değiştirmek için; bu Googlebot gününüzü mahvetmek için harika bir yoldur
  • Yokbütün bir kaynak güncellenmesi sürece kullanın
  • Yokayrıca meşru bir aynı URİ ALMAK yapmadığınız sürece kullanın
  • YokYAZI çok uzun ömürlü olduğunu veya önbellek için makul olabilecek bilgileri almak için kullanın
  • YokKOY idempotent bir işlem gerçekleştirin
  • Yapınkullanmak için mümkün olduğunca OLSUN
  • Yapıntercih SONRASI herhangi bir kuşkunuz varsa KOYMAK için kullanın
  • YapınRPC gibi birşey ile yapmanız gereken her kaydedersiniz
  • Yapınkullanımı daha büyük ya da hiyerarşik kaynaklar sınıfları için KOYMAK
  • Yapınkaynakları kaldırmak için YAZI tercih SİLMEK için kullanın
  • Yapınkullanım giriş büyük YAZI kullanmak olursa hesaplamaları gibi şeyler için

Web tasarım hizmeti HTTP ile genel ilkeler

  • Yokbir başlığı olması gereken bir yanıt gövdesinde meta koyun
  • Yokönemli ek yük yaratır dahil sürece ayrı bir kaynak meta veri koymak
  • Yapınuygun durum kodunu kullanın
    • Bir kaynak oluşturduktan sonra 201 Created; kaynakgerekiryanıt gönderildikten anda var
    • 202 Accepted başarılı bir operasyonu veya bir kaynak oluşturduktan sonra uyumsuz
    • Birisi açıkça sahte olan veriler üzerinde işlem yapar; uygulamanız için bu doğrulama bir hata olabilir 400 Bad Request; genellikle yakalanmamış istisnalar için 500 saklıdır
    • 401 Unauthorized ne zaman birisi erişir API olmadan temin gerekli Authorization başlık veya zaman kimlik bilgileri içinde Authorization geçersiz; ki bu yanıt kodu değil mi bekliyordun bilgileri ile bir Authorization başlık.
    • Birileri kötü niyetli olabilir bir API eriştiğinde ya da eğer yetkili değilse 403 Forbidden
    • 405 Method Not Allowed birini KOY kullanılmış olması, POST kullandığında, vb
    • Biri sizi kabul edilemeyecek kadar büyük bir dosya göndermeye çalıştığında 413 Request Entity Too Large
    • 418 I'm a teapot when attempting to brew coffee with a teapot
  • Yapınistediğiniz zaman önbelleğe alma başlıkları kullanın
    • ETag başlıkları kolayca bir karma değer için bir kaynak azaltabilirsiniz
    • Last-Modified kaynaklar güncellenir zaman, zaman damgası civarında tutmak iyi bir fikir olduğunu belirtmek gerekir
    • Cache-Control Expires mantıklı değerler verilmelidir
  • Yapınher şey bir istek önbelleğe alma başlıkları onur(, *If-None-Modified*22) olabilir
  • Yapınmantıklı zaman yönlendirmeleri kullanabilirsiniz, ama bu bir web servisi için nadir olmalıdır

Özel sorunuza gelince, POST #4 ve #5 için kullanılmalıdır. Altında bu işlemleri düşmek "RPC gibi" kılavuz yukarıda. #5, hatırlıyorum SONRASI mutlaka Content-Type: application/x-www-form-urlencoded kullanmak zorunda değildir. Bu gibi kolayca JSON veya CSV bir yük olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Huot Media

    Huot Media

    7 Mayıs 2010
  • ShoSho

    ShoSho

    20 Ocak 2010
  • USI Events

    USI Events

    6 AĞUSTOS 2013