1
1
# Laravel Problem Detail Exceptions
2
2
3
- [ ![ Versão] ( https://img.shields.io/badge/vers%C3%A3o-1.1 .0-beta )] ( https://github.com/seu-usuario/sua-lib/releases )
3
+ [ ![ Versão] ( https://img.shields.io/badge/vers%C3%A3o-1.2 .0-beta )] ( https://github.com/seu-usuario/sua-lib/releases )
4
4
[ ![ Licença] ( https://img.shields.io/badge/licen%C3%A7a-MIT-green )] ( https://opensource.org/licenses/MIT )
5
5
6
6
Esse projeto tem por objetivo prover uma biblioteca Laravel que permite implementar de maneira simples e rápida um padrão de exceptions, seguindo os conceitos da [ RFC de problem details] ( https://datatracker.ietf.org/doc/html/rfc7807 )
@@ -21,6 +21,42 @@ php artisan vendor:publish --tag=problem-detail-exceptions
21
21
22
22
Após a publicação do pacote deve ser criado um arquivo de configuração para o projeto no seguinte caminho: ` /config/problem-detail-exceptions.php ` .
23
23
24
+ ``` php
25
+ <?php
26
+
27
+ use Gsousadev\LaravelProblemDetailExceptions\Enums\ExceptionsFieldsEnum;
28
+
29
+ return [
30
+ 'app_name' => env('PROBLEM_DETAIL_EXCEPTION_APP_NAME', 'APP'),
31
+ 'log_throw' => env('PROBLEM_DETAIL_EXCEPTION_GENERATE_LOGS', true),
32
+ 'available_fields_list' => [
33
+ ExceptionsFieldsEnum::TYPE,
34
+ ExceptionsFieldsEnum::TITLE,
35
+ ExceptionsFieldsEnum::STATUS,
36
+ ExceptionsFieldsEnum::DETAIL,
37
+ ExceptionsFieldsEnum::INTERNAL_CODE,
38
+ ExceptionsFieldsEnum::MESSAGE,
39
+ ExceptionsFieldsEnum::USER_MESSAGE,
40
+ ExceptionsFieldsEnum::USER_TITLE,
41
+ ExceptionsFieldsEnum::LOCATION,
42
+ ExceptionsFieldsEnum::TRACE_ID,
43
+ ExceptionsFieldsEnum::PREVIOUS_MESSAGE,
44
+ ExceptionsFieldsEnum::PREVIOUS_CODE,
45
+ ExceptionsFieldsEnum::PREVIOUS_TYPE,
46
+ ExceptionsFieldsEnum::PREVIOUS_LOCATION
47
+
48
+ ],
49
+ 'renderable_fields_list' => [
50
+ ExceptionsFieldsEnum::TITLE,
51
+ ExceptionsFieldsEnum::STATUS,
52
+ ExceptionsFieldsEnum::USER_MESSAGE,
53
+ ExceptionsFieldsEnum::USER_TITLE,
54
+ ],
55
+
56
+ ];
57
+
58
+ ```
59
+
24
60
## Configurando
25
61
26
62
Este pacote permite algumas configurações de customização. Para isso deve-se user o arquivo ` problem-detail-exceptions.php `
@@ -29,6 +65,12 @@ Para ter dados coerentes dentro do fluxo é importante ter duas variáveis de am
29
65
- ** PROBLEM_DETAIL_EXCEPTION_APP_NAME** : Indica o nome que pode aparecer nos logs referente ao nome do projeto ou app que o pacote esta sendo usado.
30
66
- ** PROBLEM_DETAIL_EXCEPTION_GENERATE_LOGS** : Esta variável permite que sejam ligados e desligados os logs que devem ser publicados em casos de erro.
31
67
68
+ Ex:
69
+ ``` dotenv
70
+ PROBLEM_DETAIL_EXCEPTION_APP_NAME=nome_do_aplicativo
71
+ PROBLEM_DETAIL_EXCEPTION_GENERATE_LOGS=true
72
+ ```
73
+
32
74
Existe também uma configuração que pode ser feita dentro do arquivo de configuração, informando quais campos devem ser considerados para exceptions de APIs
33
75
34
76
Existir duas configurações possíveis: Campos que devem ser usados em qualquer contexto chamado ` fields ` e campos que devem ser mostrados em chamadas HTTP como resposta em casos de erro ` renderable_fields ` .
@@ -56,8 +98,13 @@ enum ExceptionsFieldsEnum: string
56
98
case USER_TITLE = 'user_title';
57
99
case LOCATION = 'location';
58
100
case TRACE_ID = 'trace_id';
101
+ case PREVIOUS_MESSAGE = 'previous_message';
102
+ case PREVIOUS_TYPE = 'previous_type';
103
+ case PREVIOUS_CODE = 'previous_code';
104
+ case PREVIOUS_LOCATION = 'previous_location';
59
105
}
60
106
107
+
61
108
```
62
109
63
110
@@ -137,7 +184,27 @@ try {
137
184
}
138
185
```
139
186
140
- ## Padronizando Exceptions de maneira Automática
187
+ ### Log por Exception
188
+
189
+ Tambem é possível configurar o log em cada exception usando a opção ` $logThrow ` . Essa opção permite que possamos
190
+ configurar cada excessão para gerar logs, ou não, independente da configuração geral. Caso ela seja omitida a
191
+ configuração geral de logs será levada em consideração.
192
+
193
+ Ex:
194
+
195
+ ``` php
196
+ ...
197
+
198
+ class ExampleException extends ProblemDetailException
199
+ {
200
+ protected ?bool $logThrow = true
201
+
202
+ public function __construct(?\Throwable $previous = null)
203
+
204
+ ...
205
+ ```
206
+
207
+ ### Padronizando Exceptions de maneira Automática
141
208
142
209
Existe uma classe que pode ser usada em conjunto com o Handler de Exceptions do Laravel para permitir que todas as
143
210
exceptions lançadas e que passem pelo handler possam ser transformadas e normalizadas no padrão 'Problem Detail'.
@@ -180,7 +247,7 @@ class Handler extends ExceptionHandler
180
247
181
248
## Contribuindo
182
249
183
- O projeto esta em fase de construção da ideia inicial, mas apontamentos de melhorias são muito importantes para o
250
+ O projeto esta em fase de construção e apontamentos de melhorias são muito importantes para o
184
251
crescimento. Para sugerir uma melhoria use as Issues do github.
185
252
186
253
## Licença
0 commit comments