使用Slim PHP获取PUT参数

时间:2014-05-20 13:38:19

标签: php rest put restful-url slim

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

网址

http://localhost/api/update/987654321

PARAMS

id = 987654321
name = John Smith
age = 35

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')
    ]);
});

我的var_dump()结果是:

array(3) {
  ["id"]=>
  string(9) "987654321"
  ["name"]=>
  NULL
  ["age"]=>
  NULL
}

有什么问题?有什么想法吗?

2 个答案:

答案 0 :(得分:20)

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

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

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

Screenshot of the right Postman option selected

答案 1 :(得分:1)

$app->request->put()返回空值...

所以你可以使用try $app->request->params代替