2017-01-04 1 views
2

Comment puis-je obtenir le paramètre "token" à partir de la requête PUT?Yii2 reste api getBodyParams() ne peut pas obtenir les paramètres de la requête PUT

Controller:

public function actionUpdate() 
{ 
    $params = Yii::$app->getRequest()->getBodyParams(); 
    return $params; 
} 

Demande:

curl -X PUT -H "Authorization: Bearer LL_nACyYVJFJyuHJxcOtiXu3OVNBJ_xo" -F "token=12345" "http://localhost/api/v1/devices/1" 

Réponse:

{"success":true,"data":{"--------------------------580af3364bd175a7\r\nContent-Disposition:_form-data;_name":"\"token\"\r\n\r\n12345\r\n--------------------------580af3364bd175a7--\r\n"}}r 

J'ai essayé:

return $params['token']; 

PHP Notice: Undefined index: jeton

Et ce

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

Est-ce le même résultat

+0

Vous essayez d'authentifier une certaine API en passant un jeton à l'aide d'une requête PUT? –

+0

@ Jeffrey-Humanisé Oui, pour chaque demande. –

Répondre

2

Je pense que le problème est lié au type de contenu de votre demande. obtenir params corps de mettre/poste nécessite Content-type: application/x-www-form-urlencoded

essayer d'utiliser avec boucle -d au lieu de -F:

curl -X PUT -H "Authorization: Bearer LL_nACyYVJFJyuHJxcOtiXu3OVNBJ_xo" -d "token=12345" "http://localhost/api/v1/devices/1" 
+0

Oui, c'est tout. Merci. Je viens d'utiliser Postman et il a changé le type de contenu par défaut dans la requête PUT. –