2011-11-09 3 views
4

저는 Catalyst에 매우 익숙하며 웹 앱을 구축하기 시작했습니다.Catalyst에서 POST에 대한 요청을 제한하는 방법

내가 알아 내지 못했던 한 가지는 POST (예 : POST)에 대한 지정된 컨트롤러 메소드로 요청을 제한하는 방법입니다.

구체적인 예는 데이터베이스에서 개체 만들기를 트리거하는 요청입니다. 이 앱이 REST 동사와 관련하여 매우 엄격하기를 원하기 때문에 POST를 통해서만 가능해야합니다.

나는 $ c-> 방법 을 사용하여 요청에 사용 된 방법을 확인하고 내가 찾고있는 것을 찾지 못하면 오류 등을 반환 할 수 있음을 알고 있지만 거기에 ... 깨끗한 방법이 있기를 바랬습니다.

는 지금은

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

같은 내가 서브 루틴 내부의 방법을 확인하고,이 모든 방법이 작업을 수행 할 운명 건가요 있나요?

Catalyst에 매우 익숙하다는 점에 유의하십시오. 따라서 이것은 어리석은 질문 일 수 있습니다.

도움 주셔서 감사합니다.

답변

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 앱의 경우 중요 할 수도 있음)을 설정합니다.

하지만 기본적으로 나왔다면 괜찮습니다.