我使用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');
}
答案 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());