2014-01-29 2 views
2

Catalyst를 통해 편안한 API를 작성하고이 [Catalyst :: Controller :: REST] [1]에 사용하고 싶습니다.Catalyst :: Controller :: REST가 415 지원되지 않는 미디어 유형을 반환합니다.

나는이 코드를 작성했다. 그런 다음

package addressbook::Controller::REST; 
use strict; 
use warnings; 
use base qw(Catalyst::Controller::REST); 


sub user :Local :ActionCLass('REST') :Args(1){ 
    my($self, $c, $id) = @_; 

    $c->stash(id => $id); 

} 

# Get user 
sub user_GET { 
    my ($self, $c) = @_; 

    my $user = $c->model('DB::User')->find({ id => $c->stash->{id} }); 

    if ($user){ 
      $self->status_ok($c, entity => { firstname => $user->firstname }); 
    } 
    else { 
      $self->status_not_found($c, message => 'No matching user'); 
    } 
} 

__PACKAGE__->config(default => 'text/x-json'); 
1; 

내가 서버를 실행, 로컬 호스트로 이동 : 3000/휴식/사용자/1 (내가 그 ID로 사용자를) 얻을

클라이언트에서 지원하는 콘텐츠 형식을 찾을 수 없습니다 .

나는 패키지 설정하려고 -> 설정 응용 프로그램/JSON, 텍스트/XML, 텍스트/HTML, 텍스트/X-YAML을 ... 그러나 그것은 도움이 아니에요.

아이디어가 있으십니까?

감사합니다.

답변

1

구현 된 것처럼 Catalyst REST는 요청에 대한 콘텐츠 협상을 통해 사용할 직렬화 방법을 결정합니다. 기본 설정은 대체로 사용되며 일반적으로 실제 세계에서의 요청에는 콘텐츠 유형이 포함됩니다.

새로운 디시리얼라이저에서 지원되는 콘텐츠 형식 및 매핑 방법에 대한 문서는 enter link description here에서 찾을 수 있습니다. 최근 버전에서는 YAML 에 대한 지원 기능이 제거되어 브라우저에서 url을 방금 요청한 경우 text/html에 대한 기본 응답이었을 것입니다. 또한 서버를 시작으로 정보 라인에 나타납니다 촉매의 설치된 버전을 확인

curl -H "Content-Type: application/json" http://localhost:3000/rest/user/1 

자바 스크립트

를 사용하여 실제 브라우저에서

사용 컬 또는 테스트.

+0

감사합니다. 나는 문서에서 자세히 알아보고 문제를 해결했다. – perlito