Este projeto é uma API RESTful desenvolvida com o framework CodeIgniter 4 para gerenciar clientes, produtos e pedidos. Ele permite a criação, leitura, atualização e exclusão (CRUD) de registros nesses três recursos.
- PHP 7.4 ou superior
- Composer
- CodeIgniter 4
- Banco de Dados MySQL (ou outro de sua preferência)
git clone https://github.com/Davidtricolor2021/API_pedidos.git
cd API_pedidoscomposer installCopie o arquivo env para .env:
Abra o arquivo .env e configure as variáveis de ambiente, como baseURL e as configurações do banco de dados:
CI_ENVIRONMENT = development
app.baseURL = http://localhost:8080
database.default.hostname = localhost
database.default.database = nome_do_banco
database.default.username = usuario_do_banco
database.default.password = senha_do_banco
database.default.DBDriver = MySQLi
database.default.DBPrefix =
database.default.port = 3306Utilize o comando abaixo para criar o banco de dados automaticamente:
php spark db:createDepois de criar o banco de dados, rode as migrations para criar as tabelas necessárias:
php spark migratePara rodar a API localmente, execute o seguinte comando:
php spark serveIsso vai iniciar o servidor em http://localhost:8080.
A seguir estão os detalhes de cada endpoint, com exemplos de requisições e respostas.
Criar Cliente
- Método: POST
- URL: /clientes
- Body (JSON):
{
"parametros": {
"cpf_cnpj": "12345678901234",
"nome_razao_social": "Empresa Exemplo"
}
}- Resposta de Sucesso (201):
{
"cabecalho": {
"status": 201,
"mensagem": "Cliente criado com sucesso."
},
"retorno": {
"cpf_cnpj": "12345678901234",
"nome_razao_social": "Empresa Exemplo"
}
}- Resposta de Erro (422):
{
"cabecalho": {
"status": 422,
"mensagem": "Erro de validação."
},
"retorno": {
"cpf_cnpj": ["O campo cpf_cnpj é obrigatório."],
"nome_razao_social": ["O campo nome_razao_social é obrigatório."]
}
}Listar Todos os Clientes
- Método: GET
- URL: /clientes
- Resposta de Sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Clientes encontrados."
},
"retorno": [
{
"cpf_cnpj": "12345678901234",
"nome_razao_social": "Empresa Exemplo"
}
]
}Mostrar Cliente Específico
- Método: GET
- URL: /clientes/{id}
- Resposta de Sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Cliente encontrado."
},
"retorno": {
"cpf_cnpj": "12345678901234",
"nome_razao_social": "Empresa Exemplo"
}
}Atualizar Cliente
- Método: PUT
- URL: /clientes/{id}
- Body (JSON):
{
"parametros": {
"cpf_cnpj": "12345678901234",
"nome_razao_social": "Nova Empresa"
}
}- Resposta de Sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Cliente atualizado com sucesso."
},
"retorno": {
"cpf_cnpj": "12345678901234",
"nome_razao_social": "Nova Empresa"
}
}Deletar Cliente
- Método: DELETE
- URL: /clientes/{id}
- Resposta de Sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Cliente deletado com sucesso."
},
"retorno": {
"cpf_cnpj": "12345678901234",
"nome_razao_social": "Nova Empresa"
}
}Criar Produto
- Método: POST
- URL: /produtos
- Body (JSON):
{
"parametros": {
"descricao": "Produto Exemplo",
"preco": 100.0
}
}- Resposta de sucesso (201):
{
"cabecalho": {
"status": 201,
"mensagem": "Produto criado com sucesso."
},
"retorno": {
"descricao": "Produto Exemplo",
"preco": 100.0
}
}Listar todos os Produtos
- Método: GET
- URL: /produtos
- Resposta de sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Produtos encontrados."
},
"retorno": [
{
"id": 1,
"descricao": "Produto Exemplo",
"preco": 100.0
}
]
}Mostrar um Produto
- Método: GET
- URL: /produtos/{id}
- Resposta de sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Produto encontrado."
},
"retorno": {
"id": 1,
"descricao": "Produto Exemplo",
"preco": 100.0
}
}Atualizar Produto
- Método: PUT
- URL: /produtos/{id}
- Body (JSON):
{
"parametros": {
"descricao": "Produto Atualizado",
"preco": 120.0
}
}- Resposta de sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Produto atualizado com sucesso."
},
"retorno": {
"descricao": "Produto Atualizado",
"preco": 120.0
}
}Deletar Produto
- Método: DELETE
- URL: /produtos/{id}
- Resposta de sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Produto deletado com sucesso."
},
"retorno": {
"id": 1,
"descricao": "Produto Atualizado",
"preco": 120.0
}
}Criar Pedido
- Método: POST
- URL: /pedidos
- Body (JSON):
{
"parametros": {
"cliente_id": <ID do cliente>,
"produtos": [
{
"produto_id": <ID do produto>,
"quantidade": <quantidade>
}
]
}
}- Resposta de sucesso (201):
{
"cabecalho": {
"status": 201,
"mensagem": "Pedido criado com sucesso."
},
"retorno": {
"pedido": <detalhes do pedido>,
"produtos": <produtos inseridos no pedido>
}
}Listar todos os Pedidos
- Método: GET
- URL: /pedidos
- Resposta de sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Pedidos listados com sucesso."
},
"retorno": [
{
"id": <ID do pedido>,
"cliente_id": <ID do cliente>,
"status": <status do pedido>,
"produtos": [
{
"descricao": <descrição do produto>,
"quantidade": <quantidade>,
"preco": <preço>
}
]
}
]
}Mostrar Pedido Específico
- Método: GET
- URL: /pedidos/{id}
- Resposta de sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Pedido encontrado."
},
"retorno": {
"id": <ID do pedido>,
"cliente_id": <ID do cliente>,
"status": <status do pedido>,
"produtos": [
{
"descricao": <descrição do produto>,
"quantidade": <quantidade>,
"preco": <preço>
}
]
}
}Atualizar Pedido (Aqui podemos passar os parametros para a requisição de 3 formas diferentes)
- Método: PUT
- URL: /pedidos/{id}
- Body (JSON):
Atualizar somente status do Pedido
{
"parametros": {
"status": <status>
}
}Atualizar quantidade e preco
{
"parametros": {
"produtos": [
{
"produto_id": <ID do produto>,
"quantidade": <quantidade>,
"preco": <preco>
}
]
}
}Deletar produto do pedido
{
"parametros": {
"produtos_excluir": [
{
"produto_id": <ID do produto>
}
]
}
}- Resposta de sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Pedido atualizado com sucesso."
},
"retorno": {
"pedido": <detalhes do pedido atualizado>,
"produtos": <produtos atualizados>
}
}Deletar Pedido
- Método: DELETE
- URL: /pedidos/{id}
- Resposta de sucesso (200):
{
"cabecalho": {
"status": 200,
"mensagem": "Pedido deletado com sucesso."
},
"retorno": {
"pedido_id": <ID do pedido deletado>
}
}