Yii2 RESTful Webservice:JSON请求格式

时间:2014-06-23 15:05:19

标签: json web-services rest yii yii2

这是我的第一个问题:

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

但是当我尝试创建新对象时,我遇到了错误。我使用Chrome扩展程序Advanced Rest Client并发布以下数据:

{
    "team": 1
}

我也尝试了不同的格式。

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

[{
    "field":"team",
    "message":"Team cannot be blank."
}]

你有什么建议我做错了吗?

谢谢!

2 个答案:

答案 0 :(得分:21)

我想你们都让我走上正轨。谢谢你!

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

以下是如何在main-configuration中配置解析器:

'request' => [
    'parsers' => [
        'application/json' => 'yii\web\JsonParser',
    ]
]

您可以在此处找到更多信息:JsonParser

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

答案 1 :(得分:3)

我认为您使用$ _POST捕获已发布的数据并不起作用。因为您正在发送json数据。如果是这样,您必须使用file_get_contents('php://input')来访问发送数据。这是请求的Content-Type标头的问题。 $ _POST在设置为application/x-www-form-urlencoded

时有效

以下是类似的问题handle json request in PHP