2009-06-05 10 views
7

Diyelim ki birkaç kaynak göstererek bir web uygulamasına sahibiz.RESTful grails application: DRYing up UrlMapping

  • etiketler
  • URL'lerin
  • kullanıcıları

uygulama kullanıcıları ve bazı yönetim etkileşim klasik web arayüzü var. Kaynakları RESTful API aracılığıyla uygulamadan istemcilere sunmak istiyoruz ve uygulamanın bu bölümünün zaten sahip olduğumuz denetleyicileri ve kodları karıştırmasını istemiyoruz. yüzden aşağıdaki ile geldi:

web arayüzü host/app_path/url/[list|show|create] sunuyorsa

biz REST API /host/app_path/rest/url olmak istiyorum.

yüzden şu UrlMappings dosyası ile sona erdi:

sorundur, bu burada tam olarak en KURU şey olmadığını. Etiketler gibi daha fazla kaynak ekledikçe daha da kötüleşir. Onlar

olmayan crud fonksiyonları belirli kriterler ile arama gibi şeyler olacak ... çok benzer kod henüz başka üç blok da uyarlanabilir böyle ...

Biz bir döngü ile haritalama kapanışlarını üreten çalıştı ama başarı olmadan. Burada yanlış yolda mıyız? Aşağıda

"/rest/url/$id?"(resource:"urlRest") 

bu urlRestController için yaratacağı konusunda eylem haritalama HTTP yöntemidir:

cevap

7

aşağıdaki eşleme öneriyoruz

GET   show 
PUT   update 
POST  save 
DELETE  delete 

Ben haritasını oluşturmak istediğiniz olası nedenini öğrenmek/dinlenme/url POST kaydetmek ve/istemek/url/id PUT güncellemek, ancak bu fiillerin anlamlarına karşı gider. Bir URL'yi güncellemenin tek yolu yeni bir URL ve POST eklemenin tek yolu PUT olmalıdır. Bunu yaptığınız gibi yapmak, kısıtlama mevcut denetleyici kodunuzu elinizde tutmak için en iyi yol olabilir. Ancak, benim tahminim, denetleyicinin varsayılan eşleştirmeleri işlemek için zaten kodlanmış olabileceğidir (hiçbir id olmazsa, güncelleme/silme hatası ver, kimliği yoksa listeye yönlendirmeleri göster vb.).

+1

Ahh, PUT/POST olayı: D – kungfoo