Yii2 rest api getBodyParams() 无法从 PUT 请求中获取参数
Yii2 rest api getBodyParams() can't get params from PUT request
如何从 PUT 请求中获取 "token" 参数?
控制器:
public function actionUpdate()
{
$params = Yii::$app->getRequest()->getBodyParams();
return $params;
}
要求:
curl -X PUT -H "Authorization: Bearer LL_nACyYVJFJyuHJxcOtiXu3OVNBJ_xo" -F "token=12345" "http://localhost/api/v1/devices/1"
回复:
{"success":true,"data":{"--------------------------580af3364bd175a7\r\nContent-Disposition:_form-data;_name":"\"token\"\r\n\r\n12345\r\n--------------------------580af3364bd175a7--\r\n"}}r
我试过这个:
return $params['token'];
PHP 注意:未定义索引:token
还有这个
parse_str(file_get_contents("php://input"), $params);
会不会return结果一样
我认为问题与您请求的内容类型有关。
从 put/post 获取正文参数需要 Content-type: application/x-www-form-urlencoded
尝试将 curl 与 -d
一起使用而不是 -F
:
curl -X PUT -H "Authorization: Bearer LL_nACyYVJFJyuHJxcOtiXu3OVNBJ_xo" -d "token=12345" "http://localhost/api/v1/devices/1"
如何从 PUT 请求中获取 "token" 参数?
控制器:
public function actionUpdate()
{
$params = Yii::$app->getRequest()->getBodyParams();
return $params;
}
要求:
curl -X PUT -H "Authorization: Bearer LL_nACyYVJFJyuHJxcOtiXu3OVNBJ_xo" -F "token=12345" "http://localhost/api/v1/devices/1"
回复:
{"success":true,"data":{"--------------------------580af3364bd175a7\r\nContent-Disposition:_form-data;_name":"\"token\"\r\n\r\n12345\r\n--------------------------580af3364bd175a7--\r\n"}}r
我试过这个:
return $params['token'];
PHP 注意:未定义索引:token
还有这个
parse_str(file_get_contents("php://input"), $params);
会不会return结果一样
我认为问题与您请求的内容类型有关。
从 put/post 获取正文参数需要 Content-type: application/x-www-form-urlencoded
尝试将 curl 与 -d
一起使用而不是 -F
:
curl -X PUT -H "Authorization: Bearer LL_nACyYVJFJyuHJxcOtiXu3OVNBJ_xo" -d "token=12345" "http://localhost/api/v1/devices/1"