Perl Catalyst::Controller::REST返回415种不支持的媒体类型

Perl Catalyst::Controller::REST返回415种不支持的媒体类型,perl,rest,catalyst,Perl,Rest,Catalyst,我想通过Catalyst编写restful api,并用于此[Catalyst::Controller::REST][1] 我已经写了那个代码 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

我想通过Catalyst编写restful api,并用于此[Catalyst::Controller::REST][1]

我已经写了那个代码

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;
然后我运行服务器,转到localhost:3000/rest/user/1(我有该id的用户)并获取

找不到客户端支持的内容类型

我尝试设置->配置application/json、text/xml、text/html、text/x-yaml。。。但这没有帮助

有什么想法吗


谢谢

在实现时,Catalyst Action REST对请求进行内容协商,以确定要使用的序列化方法。默认设置只是一个回退,通常您在现实世界中的请求将包含一个内容类型

有关支持的内容类型以及如何映射到新的反序列化程序的文档可在以下位置找到: . 还请注意,最新版本删除了对YAML的内置支持 如果您只是在浏览器中请求url,则这将是对text/html的默认响应

使用Javascript在真实浏览器中使用curl或test

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

另外,请检查您安装的Catalyst版本,该版本将在启动服务器时显示在信息行上。

谢谢。我仔细翻阅了文档,解决了这个问题