2011-11-09 30 views
4

我對Catalyst非常陌生,剛開始構建一個Web應用程序來學習一些東西。我還沒有想出如何在催化劑中限制對POST的請求

的一件事是如何限制的請求,給定控制器的方法爲POST(例如)。

一個具體的例子是,將觸發在數據庫中的對象的創建該請求。由於我希望這個應用程序對REST動詞非常嚴格,所以只能通過POST進行。

我知道我可以使用 $ c->方法 檢查請求中使用的方法,並返回一個錯誤或類似的東西,如果我找不到我在找什麼,但我是希望有一個更清潔的方式。

現在,我有這樣的事情

sub create :Local :Args(0) { 
    ... 
} 

難道我註定要檢查方法子程序裏面,每一個方法有做到這一點?

請你記住,我非常新的催化劑,所以這可能是一個愚蠢的問題。

感謝您的幫助!

回答

6

可以使用Catalyst::Controller::REST模塊。

sub thing : Local : ActionClass('REST') { } 

# Answer POST requests to "thing" 
sub thing_POST { 
    my ($self, $c) = @_; 

    # Return a 200 OK, with the data in entity 
    # serialized in the body 
    $self->status_ok(
     $c, 
     entity => { 
      some => 'data', 
      foo => 'is real bar-y', 
     }, 
    ); 
} 
2
if ($c->req->method eq 'POST') { 
    $form->process(params => $c->req->params); 
} 
0

催化劑已在覈心HTTP方法匹配了將近一年:

http://www.catalystframework.org/calendar/2013/3

有優點和缺點,使用它在催化劑::動作:: REST。大部分歸結爲風格,而且CAR在設置HTTP接受標頭方面做得更好(對於硬核REST應用程序來說可能很重要)

但是,基本知識您開箱即可使用。