Esta API fornece informações sobre produtos e sobre a loja. É implementada utilizando apenas módulos padrão do Ruby e lê os dados a partir de arquivos CSV
. Este projeto é um desafio proposto no curso de desenvolvimento backend Ruby da FAP/Softex.
Retorna uma lista de produtos. Cada produto é representado por um objeto com as seguintes propriedades:
-
photo:
string
URL da imagem do produto (proporção 1:1 recomendada). -
name:
string
Nome do produto. -
price:
number
Preço do produto. -
is_promotion:
boolean
Se verdadeiro, aplica um desconto de 20% no valor do preço.
Exemplo de Resposta:
[
{
"photo": "https://example.com/images/laptop.png",
"name": "Laptop Gamer",
"price": 2500.00,
"is_promotion": true
},
{
"photo": "https://example.com/images/mouse.png",
"name": "Mouse Wireless",
"price": 150.00,
"is_promotion": false
}
]
Retorna informações sobre a loja. As propriedades da loja são:
-
name:
string
Nome da loja. -
color:
string
Cor da loja no formato hexadecimal. -
owner:
string
Nome completo do proprietário da loja. -
department:
string
Departamento da loja.
Exemplo de Resposta:
{
"name": "Loja Tech",
"color": "#FF5733",
"owner": "João da Silva",
"department": "Informática"
}
Os dados para a rota /products
são armazenados no arquivo csv database.csv
A API é implementada utilizando apenas módulos padrão do Ruby, com a exceção da gem artii para a geração de arte em texto, incluindo:
csv
para escrita de arquivos CSV.json
para manipulação de dados JSON.artii
utilizada para gerar arte em texto.
-
Certifique-se de que Ruby está instalado.
-
Clone o repositório:
git clone <URL_DO_REPOSITORIO>
-
Navegue até o diretório do projeto:
cd <DIRETORIO_DO_PROJETO>
-
Execute o servidor:
ruby server.rb
O servidor estará rodando em
http://localhost:8080
. -
Acesse as rotas:
- Produtos:
http://localhost:8080/products
- Informações da Loja:
http://localhost:8080/info
- Produtos:
Utilize ferramentas como curl
ou clientes HTTP para acessar as rotas e visualizar as respostas:
curl http://localhost:8080/products
curl http://localhost:8080/info
Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.