gustavosantos / api-response
v1.3.0
2020-06-23 12:26 UTC
Requires
- php: >=7.3.6
- ext-json: *
- doctrine/annotations: ^1.8
- doctrine/common: ^2.11
- gustavosantos/status-http: ^1.0
- jms/serializer: ^3.3
- laminas/laminas-diactoros: ^2.2
- laminas/laminas-servicemanager: ^3.4
- psr/container: ^1.0
README
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 构造函数中指定。