yii2restfulwebservice:JSON请求格式
这是我的第一个问题: 我正在尝试用Yii2构建一个RESTful Web服务。控制器从ActiveController扩展而来,并具有相应的模型。读取数据工作正常,没有问题 但是当我尝试创建新对象时,我遇到了一个错误。我使用Chrome extension高级Rest客户端并发布以下数据: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."
{
"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获取和解析输入。