Fat-Free Framework 如何获取 post api 请求?

How does Fat-Free Framework get post api request?

提问人:Jarosław Bielawski 提问时间:8/7/2023 更新时间:8/9/2023 访问量:70

问:

我想在 Fat-Free Framework 上创建一个 API POST 处理程序。

当我在应用程序内发送任何测试 POST 请求时,没有任何反应,找不到错误的原因。

发送请求

$dataContainers = [
            'type' => 1, 
            'units' => 1, 
            'container' => 1,
        ];
    
$query = http_build_query($data);
    
$options = ['http' => [
            'method' => 'POST',
            'header' => ['Content-Type: application/json; charset=utf-8'],
            'content' => $query,
            ],
            ];
    
$context = stream_context_create($options);
    
$response = @file_get_contents('/api/packer/containers', false, $context);

路由.ini

POST /api/packer/containers = App\Controller\Packer\PackerApiController->setContainers

控制器

class PackerApiController
{
    private $data;

    public function __construct($f3, $params)
    {
     // Trying to test get and return any data
     $params; // empty
     $post = json_decode(file_get_contents('php://input'), true); // empty
     $post = json_decode($f3->get('BODY'), true); // empty

     header('Cache-Control: no-cache, must-revalidate');
     header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
     header('Content-Type: application/json; charset=utf-8');

     return json_encode($post);
}
}
php 无脂肪框架

评论

0赞 ADyson 8/8/2023
删除 from 以防抑制错误@@file_get_contents
0赞 ADyson 8/8/2023
另外,在您的发送代码中,您写了......等等,但您还没有向我们展示任何代码来实际显示该响应。例如。然后,您可以实际看到请求返回的内容。$response =var_dump($response);
1赞 CBroe 8/8/2023
我怀疑这会发出HTTP请求,仅仅基于您在HTTP流上下文中传递的请求......?您应该给它一个实际的 HTTP/HTTPS URL 作为参数,而不是可能被解释为本地文件系统路径的内容。file_get_contents
0赞 Jarosław Bielawski 8/8/2023
@CBroe 请告知如何编写路径,以便在测试时和服务器上在本地工作?
0赞 CBroe 8/9/2023
我不知道你的本地URL是什么样子的......像......http://mytestsystem.local/api/packer/containers

答:

1赞 george007 8/9/2023 #1

您定义了指向 的方法的路由。但是,您尝试在此类的构造函数中处理请求。创建方法并将代码移动到该方法。setContainersPackerApiController