【问题标题】:Slim 3 getParsedBody() always null and emptySlim 3 getParsedBody() 始终为空且为空
【发布时间】:2017-07-01 03:07:51
【问题描述】:

我正在使用 Slim Framework Version 3,但遇到了一些问题。

$app-> post('/', function($request, $response){
  $parsedBody = $request->getParsedBody()['email'];
  var_dump($parsedBody);
});

结果总是:

你能帮帮我吗?

【问题讨论】:

  • 您能解释一下您的请求如何将数据发送到应用程序吗?
  • 显示一个 curl 请求示例。

标签: php null slim slim-3


【解决方案1】:

当我切换到 slimframework 版本 4 时,我必须添加:

$app->addBodyParsingMiddleware();

否则body总是为null(甚至getBody())

【讨论】:

  • 问题是关于 Slim 版本 3,而不是 4。
  • 谢谢你,我的 Slim 4 搜索把我带到了这里。
  • 尽管这个问题是关于 slim 3 的,但您确实发现它总是在顶部,这个答案是 slim 4 的完美答案,非常感谢您!
【解决方案2】:

这取决于您如何向路由发送数据。这是一个 POST 路由,因此默认情况下它会期望正文数据为标准表单格式(application/x-www-form-urlencoded)。

如果您要向此路由发送 JSON,则需要将 Content-type 标头设置为 application/json。即卷曲看起来像:

curl -X POST -H "Content-Type: application/json" \
  -d '{"email": "a@example.com"}' http://localhost/

此外,您应该验证您要查找的数组键是否存在:

$parsedBody = $request->getParsedBody()
$email = $parsedBody['email'] ?? false;

【讨论】:

  • 我用 var_dump($request->getParsedBody()); 得到了 NULL使用 PATCH 或 PUT 请求时。但 POST 请求返回请求正文。 PATCH 和 PUT 有不同的方法吗?
  • @ultrasamad 请使用最小的 PHP 代码示例和用于显示问题的 curl 命令创建一个单独的问题。
【解决方案3】:

请试试这个方法:

$app-> post('/yourFunctionName', function() use ($app) {
  $parameters = json_decode($app->request()->getBody(), TRUE);
  $email = $parameters['email'];
  var_dump($email);
});

希望对你有帮助!

【讨论】:

  • 这不适用于 OP 正在使用的 Slim Framework 3。
  • 你确定吗?这个对我有用。看看这个stackoverflow.com/questions/28073480/…
  • 这是针对 Slim Framework 版本 2,而不是针对 Slim Framework 版本 3。请求的工作方式从 2 到 3 发生了很大变化。
【解决方案4】:

在 Slim 3 中,您必须为此注册一个 Media-Type-Parser 中间件。

http://www.slimframework.com/docs/v3/objects/request.html

$app->add(function ($request, $response, $next) {
    // add media parser
    $request->registerMediaTypeParser(
        "text/javascript",
        function ($input) {
            return json_decode($input, true);
        }
    );

    return $next($request, $response);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 2018-06-26
    • 2015-10-24
    • 2011-11-10
    • 2017-07-31
    相关资源
    最近更新 更多