yii2restfulwebservice:JSON请求格式

yii2restfulwebservice:JSON请求格式,json,web-services,rest,yii,yii2,Json,Web Services,Rest,Yii,Yii2,这是我的第一个问题: 我正在尝试用Yii2构建一个RESTful Web服务。控制器从ActiveController扩展而来,并具有相应的模型。读取数据工作正常,没有问题 但是当我尝试创建新对象时,我遇到了一个错误。我使用Chrome extension高级Rest客户端并发布以下数据: { "team": 1 } 我还尝试了不同的格式 但我总是得到这样的回答: [{ "field":"team", "message":"Team cannot be blank."

这是我的第一个问题:

我正在尝试用Yii2构建一个RESTful Web服务。控制器从ActiveController扩展而来,并具有相应的模型。读取数据工作正常,没有问题

但是当我尝试创建新对象时,我遇到了一个错误。我使用Chrome extension高级Rest客户端并发布以下数据:

{
    "team": 1
}
我还尝试了不同的格式

但我总是得到这样的回答:

[{
    "field":"team",
    "message":"Team cannot be blank."
}]
你有什么建议我做错了什么


谢谢

我认为您是在用$u POST捕获发布的数据,但它不起作用。因为您正在发送json数据。如果是这样,您必须使用
file\u get\u contents('php://input)
以访问发送数据。这是请求的
内容类型
头的问题。当设置为
application/x-www-form-urlencoded


这里有一个类似的问题

我想你们都让我走上了正确的道路。谢谢你

问题在于Yii2使用集成的解析器解析JSON请求。我认为这些解析器是默认配置的(因为文档中没有配置它的提示)。但是解析器必须由我自己配置

以下是如何在主配置中配置解析器:

'request' => [
    'parsers' => [
        'application/json' => 'yii\web\JsonParser',
    ]
]
您可以在此处找到更多信息:


我希望这能帮助其他遇到同样问题的人。

你能把你在行动中捕获$\u POST参数的部分放进去吗?太棒了!!这正是我的问题!如果您在提交请求时显式添加标题“Content Type=application/json”,这也会有所帮助。但我仍然无法获取请求参数“request”=>[“parsers”=>[“application/json”=>“yii\web\JsonParser',],“cookieValidationKey”=>“1vwijokrv9mgh6ntznmvufu1roaec2zdq”,],这对于“Content-Type:application/xml”很有用,您可以根据
Content-Type
header获取和解析输入。