2012-12-22 28 views
5

我有以下幾點:的Grails 2.2.0 URLMappings:任何方式使用相同的URL與不同的動詞

"/api/users"(controller: "user") { 
    action = [GET:"list"] 
} 

做一個呼叫http://localhost:8080/platform/users我得到用戶列表了。然後我說這個:

"/api/users"(controller: "user") { 
    action = [POST:"save"] 
} 

而現在,我收到了404和它沒有擊中UserController的任一方法。我希望能夠使用與控制哪個動作的動詞相同的URL。我做錯了嗎?還是Grails不支持這個?

回答

11

從Grails的文檔:URL Mappings

static mappings = { 
    "/product/$id"(controller:"product") { 
     action = [GET:"show", PUT:"update", DELETE:"delete", POST:"save"] 
    } 
} 

對於您的情況:

"/api/users"(controller: "user") { 
    action = [GET:"list",POST:"save"] 
} 
+0

我覺得像個白癡。我知道。 Must..get..sleep。謝謝詹姆斯。 – Gregg

+0

如果方法在單獨的控制器中,那麼該怎麼辦?或者例如/用戶轉到一個動作,/ users/1111轉到另一個動作? – Jackie

+0

@Jackie可能比你計劃的應用程序結構糟糕。如果它更復雜,還要記住重定向。 –

2

檢查UserController中,看看是否有相應的定義如下allowedMethods:

class UserController { 

    static allowedMethods = [save: "POST", list: "GET"] 

    def list() { 
    ..... 
    } 

    def save() { 
    ..... 
    } 
} 
相關問題