2017-01-04 69 views
2

如何從PUT請求中獲取「token」參數?Yii2 rest api getBodyParams()無法從PUT請求中獲取參數

控制器:

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公告:未定義指數:令牌

parse_str(file_get_contents("php://input"), $params); 

將返回相同的結果

+0

你們是不是要驗證一些API使用PUT請求傳遞令牌? –

+0

@傑弗裏 - 人性化是的,爲每一個請求。 –

回答

2

我認爲這個問題是有關內容類型的請求。從認沽/後 讓身體PARAMS需要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" 
+0

是的,就是這樣。謝謝。我只是使用Postman,它在PUT請求中默認地改變了Content-type。 –