Request parameters are empty using Slim v4.1(使用Slim v4.1时,请求参数为空)
本文介绍了使用Slim v4.1时,请求参数为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将Slim v4
用于一个小的Arduino组件API。当我在我的控制器上执行POST
调用时,我得到一个空的请求正文,没有我发送给它的参数。
在下面的代码中,在$parameters
变量i中有一个空。
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response
) : ResponseInterface {
$ret = [
'success' => false
];
$parameters = (array) $request->getParsedBody();
}
我正在使用postman
执行CURL
请求,但在bash中使用curl
时也会显示此错误。
下面的代码是我注册新API调用的方式。
$application = AppFactory::create();
$application->group('/ambient', function(RouteCollectorProxy $routeCollector) {
$routeCollector
->post('/register', RegisterAmbientController::class)
->setName('register-ambient');
});
您还可以在My GitHub中查看完整代码: https://github.com/JasterTDC/ardu-component/tree/feature/register-temp-humidity
提前谢谢!
推荐答案
Slim 4不会自动解析正文,除非它是基于表单的POST请求。如果您的有效负载是POST或PUT中的JSON或XML,那么您将需要一些正文解析中间件。
BodyParsingMiddleware
为超薄4添加了yesterday。
$app
实例后添加$app->addBodyParsingMiddleware();
。类似这样的工作方式:
use PsrHttpMessageResponseInterface;
use PsrHttpMessageServerRequestInterface;
use SlimFactoryAppFactory;
use SlimMiddlewareBodyParsingMiddleware;
use SlimPsr7Response;
$app = AppFactory::create();
$app->addBodyParsingMiddleware();
$app->post('/data', function (ServerRequestInterface $request): ResponseInterface {
$data = $request->getParsedBody();
$response = new Response();
$response->getBody()->write(
print_r($data, true)
);
return $response;
});
$app->run();
但是请注意,您需要在您的Composer.json中使用dev-4.x
,或者等待4.1之后的下一个次要版本。
这篇关于使用Slim v4.1时,请求参数为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:使用Slim v4.1时,请求参数为空


猜你喜欢
- PHP - if 语句中的倒序 2021-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01