【问题标题】:How to post data of 'content-type application/json' to slim php rest service如何将'content-type application/json'的数据发布到slim php rest服务
【发布时间】:2015-04-16 02:34:26
【问题描述】:

我在将 mime 类型 content-type application/json 的数据从 Chrome Advance rest Client 发布到 slim 框架 Web 服务时遇到问题。 我尝试将这些代码发送到application/json

$app->post('/register', function() use ($app) {
            $app->add(new \Slim\Middleware\ContentTypes());            
            $params = $app->request->getBody();
            $name = $params->name;
            $email = $params->email;
            $password = $params->password;
            ...});

也试过了

$params = json_decode($app->request()->getBody());


 var_dumb($params); //get NULL value here

获取错误

Trying to get property of non-object to this `$name = $params->name;`

请帮助我如何捕获应用程序/json 格式的数据? 谢谢你

【问题讨论】:

  • 您显示的错误与您的第一个 sn-p 的第一部分有关。尝试评论它并尝试只处理第二个。
  • 介意分享您提交的 JSON 对象吗?

标签: php json rest slim


【解决方案1】:

根据上述细节,假设您的原始 JSON 看起来像这样

{"name":"John Smith", "mail":"jhon@mail.com", "password":"foobar"}

您可以像这样访问您的参数数组

$app->post('/register', function () use ($app) {
$params =  $app->request->getBody() ;
$params = array_filter($params);

if(!empty($params)){
    $name = $params['name'];
    $mail = $params['mail'];
    $pass = $params['password'];

   // print $name;
  }

})->name("register");

或者,如果您通过 Content-Type: application/x-www-form-urlencoded 在 Advanced Rest 客户端中发布,您可以使用 $app->request->post(); 访问您的阵列

$app->post('/register/', function () use ($app) {

   $userInfo = $app->request()->params() ;
   //or
   $userInfo =  $app->request->post() ;
   $name = $userInfo['name'];
   $mail = $userInfo['email'];
   $pass = $userInfo['password'];

 // print $name

})->name("register");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2018-03-17
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 2019-02-20
    • 2019-05-22
    相关资源
    最近更新 更多