如何解决Slim Framework 4 getParsedBody 总是返回 null
我正在测试 Slim Framework 4,当我使用 getParsedBody 方法通过 POST 提交 JSON 时,我似乎无法检索任何数据,它总是导致 NULL。这是我的端点:
<?php
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
$app->post('/prueba',function (Request $request,Response $response,$args) {
$data = $request->getParsedBody();
$response->getBody()->write(json_encode($data));
return $response->withHeader('Content-Type','application/json')
->withStatus(200);
});
根据一些文档,我添加了 BodyParsing 中间件:
<?php
use Dotenv\Dotenv;
use Slim\Views\Twig;
use Slim\Factory\AppFactory;
use Slim\Views\TwigExtension;
use Slim\Psr7\Factory\UriFactory;
use Dotenv\Exception\InvalidPathException;
require_once __DIR__ . '/../vendor/autoload.php';
try {
(new Dotenv(__DIR__ . '/../'))->load();
} catch (InvalidPathException $e) {
//
}
$container = new DI\Container();
AppFactory::setContainer($container);
$app = AppFactory::create();
$app->addBodyParsingMiddleware();
$app->addRoutingMiddleware();
$app->addErrorMiddleware(true,true,true);
$container->set('settings',function () {
return [
'app' => [
'name' => getenv('APP_NAME')
],'db' => [
'driver' => getenv('DB_DRIVER'),'host' => getenv('DB_HOST'),'database' => getenv('DB_NAME'),'username' => getenv('DB_USER'),'password' => getenv('DB_PASS'),'charset' => getenv('DB_CHARSET'),'collation' => getenv('DB_COLLATION'),'prefix' => ''
]
];
});
$capsule = new \Illuminate\Database\Capsule\Manager();
$capsule->addConnection($container->get('settings')['db']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
$container->set('view',function ($container) use ($app) {
$twig = new Twig(__DIR__ . '/../resources/views',[
'cache' => false
]);
$twig->addExtension(
new TwigExtension(
$app->getRouteCollector()->getRouteParser(),(new UriFactory)->createFromGlobals($_SERVER),'/'
)
);
return $twig;
});
require_once __DIR__ . '/../routes/api.php';
这是我要发送的请求:
curl --location --request POST 'http://localhost:80/prueba' \
--header 'Content-type: application/json' \
--data-raw '{"name": "Rob","country": "UK"}'
我已经调试了一些并验证了中间件正在处理请求,但到目前为止我无法让它返回除 null 之外的任何其他内容。也查看了,似乎没有任何报告的问题具有明确的解决方案。
解决方法
没关系,是骨骼缺陷导致的问题,使用苗条的官方骨骼一切都解决了
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。