tandrewcl/api-response-convert

简单的 JSON 响应转换器

安装: 114

依赖: 0

建议: 0

安全性: 0

星标: 0

关注者: 1

分支: 1

类型:symfony-bundle

v0.2.0 2024-04-17 15:23 UTC

This package is auto-updated.

Last update: 2024-09-17 16:19:55 UTC


README

关于包

此包是模型/DTO/异常转换为 JsonResponse 的简单解决方案

安装

步骤 1:下载包

打开命令行控制台,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本

    $ composer require tandrewcl/api-response-convert

此命令要求您全局安装了 Composer,如 Composer 文档中的安装章节所述。

步骤 2:配置和用法

感谢使用 Symfony flex Bundle,它在 config/bundles.php 中已自动启用

...
use tandrewcl\ApiResponseConvertBundle\Converter\ResponseConverterInterface;
use tandrewcl\ApiResponseConvertBundle\Handler\ResponseHandler;
use tandrewcl\ApiResponseConvertBundle\Model\ConvertedResponseModel;
...

class FooConverter implements ResponseConverterInterface
{
    public static function getDefaultSupportedClassPriority(): int
    {
        return -245;
    }

    public function support(mixed $data): bool
    {
        return $data instanceof \Exception;
    }

    public static function getDefaultSupportedClassName(): string
    {
        return \Exception::class;
    }

    /**
     * @param \Exception $data
     */
    public function convert(mixed $data, ResponseHandler $responseHandler): ConvertedResponseModel
    {
        return new ConvertedResponseModel(
           message: $data->getMessage(), statusCode: Response::HTTP_INTERNAL_SERVER_ERROR
        );
    }
}
...
use tandrewcl\ApiResponseConvertBundle\Handler\ResponseHandler;
use Symfony\Component\HttpFoundation\JsonResponse;
...

class FooController
{
    public function __construct(
        private readonly ResponseHandler $responseHandler
    )
    {
    }

    public function indexAction(): JsonResponse
    {
        ...

        return $this->responseHandler->generateResponse($data);
    }