这是我的第一个问题:
我正在尝试使用Yii2构建RESTful Web服务。 Controller从ActiveController扩展并具有相应的模型。读取数据工作正常,没有问题。
但是当我尝试创建新对象时,我遇到了错误。我使用Chrome扩展程序Advanced Rest Client并发布以下数据:
{
"team": 1
}
我也尝试了不同的格式。
但我总是得到这样的回应:
[{
"field":"team",
"message":"Team cannot be blank."
}]
你有什么建议我做错了吗?
谢谢!
答案 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