@@ -6,6 +6,10 @@ Uma API REST com endpoints de clientes, produtos e pedidos desenvolvida com Code
6
6
![ Badge] ( https://img.shields.io/badge/CodeIgniter-4.3-red )
7
7
![ Badge] ( https://img.shields.io/badge/MySQL-8.0-orange )
8
8
9
+ ## Nota Pessoal
10
+
11
+ Gostei muito de desenvolver o projeto, assim pude conhecer a delicinha que é o Codeigniter 4, contúdo, lamento por não ter conseguido aproveitar a tempo estipulado para a realização do projeto. Passei mais tempo no hospital do que em casa. Fico feliz pela oportunidade e espero que gostem do resultado. No último momento, tive problemas com o JWT, por conta disso eu decidi não implementá-lo.
12
+
9
13
## Sobre o Projeto
10
14
11
15
Esta API foi desenvolvida como parte de um desafio técnico para a posição de Programador Back-end Júnior. O sistema permite gerenciar clientes, produtos e pedidos de compra, seguindo os seguintes requisitos:
@@ -33,19 +37,45 @@ Esta API foi desenvolvida como parte de um desafio técnico para a posição de
33
37
34
38
1 . ** Clone o repositório**
35
39
``` bash
36
- git clone https://github.com/andrepfdev/prova-backend-ci4 .git
37
- cd prova-backend-ci4
40
+ git clone https://github.com/andrepfdev/api-codeigniter4 .git
41
+ cd api-codeigniter4
38
42
```
39
43
### Método A:
40
44
41
45
2 . ** Rode o script de instalação:**
42
- ``` bash
43
- sudo chmod +x install.sh
44
- ```
45
- ` ` ` bash
46
- ./install.sh
47
- ` ` `
48
- ** Se tudo correr bem, você não precisará executar o Método B.**
46
+
47
+ - Se para rodar o docker você usa o comando ** docker compose** , sem espaço, use:
48
+
49
+ Na dúvida? Digite o comando ** docker compose version** .
50
+
51
+ ** No Linux (docker compose):**
52
+
53
+ ``` bash
54
+ chmod +x ./install.sh
55
+ ```
56
+ Depois:
57
+
58
+ ``` bash
59
+ ./install.sh
60
+ ```
61
+
62
+ - Mas, se para rodar você usa o comando ** docker-compose** , tudo junto, use:
63
+
64
+ Na dúvida? Digite o comando ** docker-compose version** .
65
+
66
+ ** No Windows (docker-compose):**
67
+
68
+ ``` bash
69
+ chmod +x ./install-wls.sh
70
+ ```
71
+ Depois:
72
+
73
+ ``` bash
74
+ ./install-wsl.sh
75
+ ```
76
+
77
+ ** Pronto! Se tudo der certinho, você não precisará executar o Método B.**
78
+
49
79
Apenas siga as instruções geradas pelo script no seu terminal.
50
80
51
81
### Método B:
@@ -54,7 +84,7 @@ Apenas siga as instruções geradas pelo script no seu terminal.
54
84
55
85
2 . ** Instale as dependências**
56
86
``` bash
57
- composer install
87
+ composer- install
58
88
```
59
89
60
90
3 . ** Copie e configure o ambiente**
@@ -76,6 +106,12 @@ Apenas siga as instruções geradas pelo script no seu terminal.
76
106
CI_ENVIRONMENT = development
77
107
```
78
108
109
+ Não pode esquecer da chave par o JWT que também vai no ** .env** :
110
+
111
+ ``` ini
112
+ JWT_SECRET = " minha_vaga_backend"
113
+ ```
114
+
79
115
4 . ** Suba os containers**
80
116
``` bash
81
117
docker-compose up -d
@@ -92,6 +128,8 @@ Apenas siga as instruções geradas pelo script no seu terminal.
92
128
```
93
129
94
130
7 . ** Execute os seeders (dados iniciais)**
131
+ - Para avitar erros devidos aos relacionamentos das tabelas, execute exatamente nesta ordem:
132
+
95
133
``` bash
96
134
php spark db:seed ProdutoSeeder
97
135
php spark db:seed ClienteSeeder
@@ -117,6 +155,12 @@ Para rodar qualquer comando `php spark`, é necessário primeiro acessar o conta
117
155
118
156
## Endpoints
119
157
158
+ ### Autenticação
159
+ | Método | Endpoint | Descrição |
160
+ | --------| ----------| -----------|
161
+ | POST | /api/registrar | Registra novo usuário |
162
+ | POST | /api/validar | Valida e gera token de autencicação |
163
+
120
164
### Clientes
121
165
| Método | Endpoint | Descrição |
122
166
| --------| ----------| -----------|
@@ -153,6 +197,16 @@ Para rodar qualquer comando `php spark`, é necessário primeiro acessar o conta
153
197
| PUT | /api/itens-pedido/{id} | Atualiza um itens-pedido existente |
154
198
| DELETE | /api/itens-pedido/{id} | Remove um itens-pedido |
155
199
200
+ ### Usuários
201
+ | Método | Endpoint | Descrição |
202
+ | --------| ----------| -----------|
203
+ | GET | /api/usuarios | Lista todos os usuários cadastrados |
204
+
205
+
206
+ ### Diagrama do Banco de Dados
207
+
208
+ ![ Image] ( https://github.com/user-attachments/assets/711de36c-8580-4530-b9dd-e2357e4046a3 )
209
+
156
210
## Paginação e Filtros
157
211
158
212
### Paginação
@@ -172,10 +226,127 @@ Parâmetros comuns de filtro:
172
226
- ` preco ` (filtra produtos por preço);
173
227
- ` status ` (filtra pedidos por status: ` Em Aberto ` , ` Pago ` , ` Cancelado ` ).
174
228
229
+ ### Consultar os endpoints
230
+
231
+ Para testar os endpoints da API, você pode utilizar ferramentas como [ Postman] ( https://www.postman.com/ ) ou [ Insomnia] ( https://insomnia.rest/ ) .
232
+
233
+ ### Exemplos de Requisições e Respostas
234
+
235
+ #### Formato Padrão
236
+
237
+ ##### Requisição
238
+ ``` json
239
+ {
240
+ "parametros" : {
241
+ "campo1" : " valor1" ,
242
+ "campo2" : " valor2"
243
+ }
244
+ }
245
+ ```
246
+
247
+ ##### Resposta
248
+ ``` json
249
+ {
250
+ "cabecalho" : {
251
+ "status" : 200 ,
252
+ "mensagem" : " Dados retornados com sucesso"
253
+ },
254
+ "retorno" : {
255
+ // dados solicitados
256
+ }
257
+ }
258
+ ```
259
+
260
+ #### Exemplos por Endpoint
261
+
262
+ ##### Clientes (` /api/clientes ` )
263
+ - ** GET** : Lista clientes (com paginação)
264
+ ``` http
265
+ GET /api/clientes?page=1&nome_razao_social=Carlos
266
+ Authorization: Bearer {seu_token}
267
+ ```
268
+ ``` json
269
+ {
270
+ "cabecalho" : {
271
+ "status" : 200 ,
272
+ "mensagem" : " Clientes listados com sucesso"
273
+ },
274
+ "retorno" : [
275
+ {"id" : 1 , "nome_razao_social" : " Carlos Silva" , "cpf_cnpj" : " 12345678901" }
276
+ ]
277
+ }
278
+ ```
279
+
280
+ ##### Produtos (` /api/produtos ` )
281
+ - ** POST** : Cria produto
282
+ ``` http
283
+ POST /api/produtos
284
+ Authorization: Bearer {seu_token}
285
+ ```
286
+ ``` json
287
+ // Enviar
288
+ {
289
+ "parametros" : {
290
+ "nome" : " Produto X" ,
291
+ "preco" : 15.00
292
+ }
293
+ }
294
+ ```
295
+
296
+ ##### Pedidos (` /api/pedidos ` )
297
+ - ** GET** : Lista pedidos filtrados
298
+ ``` http
299
+ GET /api/pedidos?status=Em%20Aberto
300
+ Authorization: Bearer {seu_token}
301
+ ```
302
+ ``` json
303
+ {
304
+ "cabecalho" : {
305
+ "status" : 200 ,
306
+ "mensagem" : " Pedidos listados com sucesso"
307
+ },
308
+ "retorno" : [
309
+ {"id" : 1 , "cliente_id" : 1 , "status" : " Em Aberto" }
310
+ ]
311
+ }
312
+ ```
313
+
314
+ ##### Itens Pedido (` /api/itens-pedido ` )
315
+ - ** POST** : Adiciona item
316
+ ``` http
317
+ POST /api/itens-pedido
318
+ Authorization: Bearer {seu_token}
319
+ ```
320
+ ``` json
321
+ // Enviar
322
+ {
323
+ "parametros" : {
324
+ "pedido_id" : 1 ,
325
+ "produto_id" : 1 ,
326
+ "quantidade" : 2
327
+ }
328
+ }
329
+ ```
330
+
331
+ #### Como Testar
332
+
333
+ 1 . Use Postman ou Insomnia
334
+ 2 . Endpoint base: ` http://localhost:8080/api `
335
+ 3 . Headers padrão:
336
+ ```
337
+ accept: application/json
338
+ Content-Type: application/json
339
+ ```
340
+ 4 . Para filtros, use query params:
341
+ ```
342
+ /api/clientes?nome_razao_social=Carlos
343
+ /api/produtos?preco=15
344
+ /api/pedidos?status=Pago
345
+ ```
175
346
## Autor
176
347
177
- Seu Nome - [LinkedIn](https://www.linkedin.com/in/andrepf7/)
348
+ André Pereira - [ LinkedIn] ( https://www.linkedin.com/in/andrepf7/ )
178
349
179
350
## Licença
180
351
181
- Este projeto está licenciado sob a licença MIT - veja o arquivo [LICENSE](LICENSE) para mais detalhes.
352
+ Este projeto está licenciado sob a licença MIT - veja o arquivo [ LICENSE] ( LICENSE ) para mais detalhes.
0 commit comments