使用Slim PHP获取PUT参数

bod*_*ruk 13 php rest put slim restful-url

我搜索过,但我找不到答案.我有一个RESTful API来管理基本的CRUD.我正在尝试使用PUT创建更新方法,但我无法检索params值.我正在使用Postman发出请求,我的请求如下:

网址

http://localhost/api/update/987654321
Run Code Online (Sandbox Code Playgroud)

PARAMS

id = 987654321
name = John Smith
age = 35
Run Code Online (Sandbox Code Playgroud)

PHP

$app = new Slim();
$app->put('/update/:id', function( $id ) use( $app ){
    var_dump([
        'id' => $id,
        'name' => $app->request->put('name'),
        'age' => $app->request->put('age')
    ]);
});
Run Code Online (Sandbox Code Playgroud)

我的var_dump()结果是:

array(3) {
  ["id"]=>
  string(9) "987654321"
  ["name"]=>
  NULL
  ["age"]=>
  NULL
}
Run Code Online (Sandbox Code Playgroud)

怎么了?任何的想法?

elo*_*ibm 22

我有同样的问题.首先,我使用Postman选项发送PUT数据,将其编码为"form-data",这就是为什么Slim没有得到param值.

正如在W3中所解释的那样,内容类型"multipart/form-data"应该用于提交包含文件,非ASCII数据和二进制数据的表单.

在我们的例子中,我们必须使用Postman选项"x-www-form-urlencoded"发送PUT数据(参见W3 中" application/x-www-form-urlencoded "的解释).

选中的右Postman选项的屏幕截图

  • 切换到x-www-form-urlencoded与postman使其工作!感谢您解释得很好的解答(w3链接)! (2认同)