Skip to content

Commit 963dd51

Browse files
committed
fix: correções
1 parent 36d1308 commit 963dd51

File tree

1 file changed

+183
-12
lines changed

1 file changed

+183
-12
lines changed

README.md

+183-12
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ Uma API REST com endpoints de clientes, produtos e pedidos desenvolvida com Code
66
![Badge](https://img.shields.io/badge/CodeIgniter-4.3-red)
77
![Badge](https://img.shields.io/badge/MySQL-8.0-orange)
88

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+
913
## Sobre o Projeto
1014

1115
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
3337

3438
1. **Clone o repositório**
3539
```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
3842
```
3943
### Método A:
4044

4145
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+
4979
Apenas siga as instruções geradas pelo script no seu terminal.
5080

5181
### Método B:
@@ -54,7 +84,7 @@ Apenas siga as instruções geradas pelo script no seu terminal.
5484

5585
2. **Instale as dependências**
5686
```bash
57-
composer install
87+
composer-install
5888
```
5989

6090
3. **Copie e configure o ambiente**
@@ -76,6 +106,12 @@ Apenas siga as instruções geradas pelo script no seu terminal.
76106
CI_ENVIRONMENT = development
77107
```
78108

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+
79115
4. **Suba os containers**
80116
```bash
81117
docker-compose up -d
@@ -92,6 +128,8 @@ Apenas siga as instruções geradas pelo script no seu terminal.
92128
```
93129

94130
7. **Execute os seeders (dados iniciais)**
131+
- Para avitar erros devidos aos relacionamentos das tabelas, execute exatamente nesta ordem:
132+
95133
```bash
96134
php spark db:seed ProdutoSeeder
97135
php spark db:seed ClienteSeeder
@@ -117,6 +155,12 @@ Para rodar qualquer comando `php spark`, é necessário primeiro acessar o conta
117155

118156
## Endpoints
119157

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+
120164
### Clientes
121165
| Método | Endpoint | Descrição |
122166
|--------|----------|-----------|
@@ -153,6 +197,16 @@ Para rodar qualquer comando `php spark`, é necessário primeiro acessar o conta
153197
| PUT | /api/itens-pedido/{id} | Atualiza um itens-pedido existente |
154198
| DELETE | /api/itens-pedido/{id} | Remove um itens-pedido |
155199

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+
156210
## Paginação e Filtros
157211

158212
### Paginação
@@ -172,10 +226,127 @@ Parâmetros comuns de filtro:
172226
- `preco` (filtra produtos por preço);
173227
- `status` (filtra pedidos por status: `Em Aberto`, `Pago`, `Cancelado`).
174228

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+
```
175346
## Autor
176347

177-
Seu Nome - [LinkedIn](https://www.linkedin.com/in/andrepf7/)
348+
André Pereira - [LinkedIn](https://www.linkedin.com/in/andrepf7/)
178349

179350
## Licença
180351

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

Comments
 (0)