gustavosantos / api-response
This package is abandoned and no longer maintained.
The author suggests using the gustavosantos/api-response package instead.
Api response allows you to handle exceptions simply and custom.
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 permite que você lide com respostas de requisições de maneira simples e personalizada.
Instalação
Execute o comando:
composer require gustavosantos/api-response
Implementação
-
Em sua middleware ou handler, basta retornar o ApiResponse.
Exemplo de implementação em uma handler:
<?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()); } } }
-
Para o retorno de exceções, você pode implementar base-exception o que lhe permite usar o método getCustomError, o qual prove uma implementação mais personalizada.
-
Exceções do tipo Exception, use o método getMessage
Retornos
- Retorno de sucesso:
{ "statuscode": 200, "data": "Sucesso!" }
- Retorno de exceção:
{ "statuscode": 400, "error": [ { "messageerror": "Ocorreu um erro ao desserializar o usuário!", "internalmessageerror": "Could not decode JSON, syntax error - malformed JSON.", "internalcodeerror": 1 } ] }
- Se os objetos dos retorno forem null, eles não serão serializados por padrão. Para alterar, basta informar no construtor do ApiResponse.