Esta API foi criada para gerenciar mesas de um restaurante, permitindo o controle de reservas, status das mesas e pedidos. Desenvolvimento com Node.js e Express.
- Node.js - Ambiente de execução JavaScript no servidor
- Express.js - Framework para criação de APIs
- TypeScript - Superset do JavaScript para tipagem estática
- SQLite - Banco de dados leve e integrado
- Knex.js - Query Builder para interação com o banco de dados
- Zod - Biblioteca para validação de dados
git clone https://github.com/NauanMelo7/api-restaurante.git
cd api-restaurantenpm installExecute as migrações para criar as tabelas no SQLite:
npx knex migrate:latestnpm run devA API estará disponível em http://localhost:3333.
GET /tables
Resposta:
[
{ "id": 1, "table_number": 10 },
{ "id": 2, "table_number": 5 }
]POST /tables
Corpo da requisição:
{
"table_number": 12
}DELETE /tables/:id
Resposta:
{}POST /tables_sessions
Corpo da requisição:
{
"table_id": 1
}GET /tables_sessions
Resposta:
[
{ "id": 1, "table_id": 1, "opened_at": "2024-03-19T12:00:00Z", "closed_at": null }
]PUT /tables_sessions/:id
Resposta:
{}GET /products
Resposta:
[
{ "id": 1, "name": "Pizza Margherita", "price": 20.0 },
{ "id": 2, "name": "Coca-Cola", "price": 5.0 }
]POST /products
Corpo da requisição:
{
"name": "Pizza Quatro Queijos",
"price": 25.0
}PUT /products/:id
Corpo da requisição:
{
"name": "Pizza Pepperoni",
"price": 30.0
}DELETE /products/:id
Resposta:
{}POST /orders
Corpo da requisição:
{
"table_session_id": 1,
"product_id": 2,
"quantity": 3
}Resposta:
Status: 201 Created
{}GET /orders/:table_session_id
Resposta:
[
{
"id": 1,
"table_session_id": 1,
"product_id": 2,
"name": "Coca-Cola",
"price": 5.0,
"quantity": 3,
"total": 15.0,
"created_at": "2024-03-21T12:00:00Z",
"update_at": null
}
]GET /orders/total/:table_session_id
Resposta:
{
"Quantity": 3,
"Total": 15.0
}A API usa Zod para validação de dados e um middleware de erros personalizado para padronizar respostas de erro.
Exemplo de resposta de erro:
{
"error": "Invalid table ID format"
}Caso ocorra um erro inesperado, a API retornará um erro 500:
{
"error": "Internal Server Error"
}Esta API fornece funcionalidades essenciais para o gerenciamento de um restaurante, incluindo o controle de mesas, sessões e produtos. Ela pode ser facilmente expandida para incluir pagamentos e integração com frontend. 🚀
No repositório existe um arquivo chamado request_insomnia com todas as requisições prontas para testes na ferramenta Insomnia.