Este projeto é uma API simples para gerenciar pedidos (orders), desenvolvida como parte do desafio técnico da Jitterbit. A API permite criar, listar, buscar, atualizar e deletar pedidos, armazenando todos os dados em um banco MongoDB, com transformação do payload antes de salvar.
- Node.js
- Express
- MongoDB + Mongoose
- dotenv
- Nodemon (ambiente de desenvolvimento)
src/
├── controllers/
├── models/
├── routes/
├── server.js
├── app.js
.env.examplegit clone https://github.com/mttomaz/jitterbit-api
cd jitterbit-apinpm installCrie um arquivo .env baseado no .env.example:
MONGO_URI=mongodb://localhost:27017/jitterbit
npm run devA API estará rodando em:
http://localhost:3000A API transforma o JSON recebido antes de persistir:
{
"orderId": "v10089016vdb-01",
"value": 10000,
"creationDate": "2023-07-19T12:24:11.529Z",
"items": [
{
"productId": 2434,
"quantity": 1,
"price": 1000
}
]
}Uma coleção completa do Postman está disponível no link abaixo:
https://www.postman.com/mttomaz/jitterbit-api/overview
Essa coleção contém todos os endpoints da API já configurados (Create, List, Get, Update, Delete), facilitando os testes.
Você precisa criar uma variável chamada baseURL no Postman:
- Abra a coleção jitterbit-api
- Vá em Variables
- Crie a variável:
- Name: baseURL
- Value: http://localhost:3000
Isso permite que todos os endpoints funcionem automaticamente, sem precisar alterar cada URL manualmente.
POST /orderPayload de entrada:
{
"numeroPedido": "v10089015vdb-01",
"valorTotal": 10000,
"dataCriacao": "2023-07-19T12:24:11.5299601+00:00",
"items": [
{
"idItem": "2434",
"quantidadeItem": 1,
"valorItem": 1000
}
]
}GET /order/:orderIdExemplo:
GET /order/v10089015vdb-01GET /order/listPUT /order/:orderIdDELETE /order/:orderIdExemplo de criação via cURL
curl --location 'http://localhost:3000/order' \
--header 'Content-Type: application/json' \
--data '{
"numeroPedido": "v10089015vdb-01",
"valorTotal": 10000,
"dataCriacao": "2023-07-19T12:24:11.5299601+00:00",
"items": [
{
"idItem": "2434",
"quantidadeItem": 1,
"valorItem": 1000
}
]
}'Projeto desenvolvido para fins educacionais/desafio técnico.