gustavosantos/api-response

此包已被废弃且不再维护。作者建议使用 gustavosantos/api-response 包。

Api response 允许您简单且自定义地处理异常。

v1.3.0 2020-06-23 12:26 UTC

This package is auto-updated.

Last update: 2021-02-26 20:28:40 UTC


README

License Minimum PHP Version

ApiResponse 允许您以简单和自定义的方式处理请求响应。

安装

执行以下命令

composer require gustavosantos/api-response

实现

  • 在其中间件或处理器中,只需返回 ApiResponse

    处理器实现示例

    <?php
    
    declare(strict_types=1);
    
    namespace Person\Handler;
    
    use Http\StatusHttp;
    use Psr\Http\Message\ResponseInterface;
    use Psr\Http\Message\ServerRequestInterface;
    use Psr\Http\Server\RequestHandlerInterface;
    use Response\ApiResponse;
    use Exception;
    use Person\PersonException;
    
    class PersonHandler implements RequestHandlerInterface
    {
        /**
         * @param ServerRequestInterface $request
         * @return ResponseInterface
         */
        public function handle(ServerRequestInterface $request): ResponseInterface
        {
            try {
                return new ApiResponse("Sucesso!", StatusHttp::OK);
            } catch (PersonException $e) {
                return new ApiResponse($e->getCustomError(), $e->getCode());
            } catch (Exception $e) {
                return new ApiResponse($e->getMessage(), $e->getCode());
            }
        }
    }
  • 对于异常的返回,您可以实现 base-exception,这使您可以使用 getCustomError 方法,它提供了一种更个性化的实现。

  • 对于 Exception 类型的异常,使用 getMessage 方法

返回值

  • 成功返回
{
    "statuscode": 200,
    "data": "Sucesso!"
}
  • 异常返回
{
    "statuscode": 400,  
    "error": [
        {
            "messageerror": "Ocorreu um erro ao desserializar o usuário!",
            "internalmessageerror": "Could not decode JSON, syntax error - malformed JSON.",
            "internalcodeerror": 1
        }
    ]
}
  • 如果返回的对象是 null,它们将默认不进行序列化。要更改此行为,只需在 ApiResponse 构造函数中指定。