Esta API permite a criação de pedidos contendo um cliente e uma lista de produtos, calculando automaticamente o valor total do pedido e retornando o resultado em formato JSON.
- PHP 8.1 ou superior
- Servidor embutido do PHP
- Docker (opcional para execução conteinerizada)
- Clone este repositório:
git clone https://github.com/carloseduardoalvesviana/microservice-orders-php.git cd orders-api
- Inicie o servidor PHP embutido:
php -S localhost:8000
A API estará acessível em http://localhost:8000
.
- Clone este repositório:
git clone https://github.com/carloseduardoalvesviana/microservice-orders-php.git cd orders-api
- Inicie os containers com Docker Compose:
docker compose up -d
A API estará acessível em http://localhost:8000
.
- URL:
http://localhost:8000/order
- Método:
POST
- Cabeçalho:
Content-Type: application/json
- Corpo da requisição:
{
"client": {
"name": "João da Silva"
},
"products": [
{
"name": "Suco",
"price": 9
},
{
"name": "Batata Frita",
"price": 9
},
{
"name": "Água Mineral",
"price": 10
}
]
}
- Código HTTP:
200 OK
- Exemplo de resposta:
{
"order": {
"client": {
"id": "c03d5703-19b8-47ad-b0d1-71c4f2ab3af4",
"name": "João da Silva"
},
"products": [
{
"name": "Suco",
"price": 9
},
{
"name": "Batata Frita",
"price": 9
},
{
"name": "Água Mineral",
"price": 10
}
],
"total_price": 28
}
}
- A API recebe os dados da requisição via JSON.
- Valida se os campos obrigatórios (cliente e produtos) estão presentes.
- Calcula o total do pedido somando os preços dos produtos.
- Retorna os detalhes do pedido gerado.
Você pode testar a API utilizando:
-
cURL:
curl -X POST "http://localhost:8000/order" \ -H "Content-Type: application/json" \ -d '{ "client": { "name": "João da Silva" }, "products": [ { "name": "Suco", "price": 9 }, { "name": "Batata Frita", "price": 9 }, { "name": "Água Mineral", "price": 10 } ] }'
-
Postman ou Insomnia:
- Crie uma nova requisição
POST
parahttp://localhost:8000/order
. - Configure o cabeçalho
Content-Type: application/json
. - Cole o corpo JSON de exemplo e envie a requisição.
- Crie uma nova requisição
Esta API é um exemplo de um microserviço simples para processamento de pedidos, adequado para integração com sistemas de e-commerce, delivery ou ERP. Caso queira utilizar esse exemplo para algum trabalho, recomendo a implementação de autenticação, comunicação com banco de dados e logs para monitoramento. A API já possui um rate limit de 100 requisições a cada 1 minuto.