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
 
