获得app / json params帖子

时间:2014-10-15 08:41:19

标签: json slim

我使用https://github.com/sahat/satellizer登录。 它使用标题Content-Type发送请求:application / json(json ex:{login:login,password:pass})

在服务器端,我使用Slim Framework。 为了检索发送的值,我通过BODY

获取它
$app = new \Slim\Slim();
$app->add(new \Slim\Middleware\ContentTypes());

$app->post('/auth/login', function () use ($app) {
    $params = $app->request()->getBody();
    print_r($params);//I've got it
});

我可以通过帖子检索这些参数吗?

if ($app->request()->isPost()) {
        $email = $app->request->post('email');
        $password = $app->request->post('password');
}

2 个答案:

答案 0 :(得分:1)

$_POST用于表单数据。正如您所注意到的,您可以在请求正文中找到JSON。

$app->post('/auth/login', function () use ($app) {
    $params = $app->request->getBody();
    print_r(json_decode($params, true));
});

答案 1 :(得分:0)

我不知道这是否内置于Slim中,但我使用自己的中间件使其正常工作。

class MyMiddleware extends \Slim\Middleware {
  function call() {
    $body = $this->app->request->getBody();
    if (is_array($body))
      $this->app->environment()['slim.request.form_hash'] = $body;
    $this->next->call();
  }
}

这应该在ContentTypes中间件之前添加,以确保正确的排序。

$app->add(new MyMiddleware());
$app->add(new \Slim\Middleware\ContentTypes());