gustavosantos / api-response
Api response allows you to handle exceptions simply and custom.
Installs: 630
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/gustavosantos/api-response
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.