Crystal-RickAndMorty-API
Code Challenge
Api que faz o uso da Api do Rick e Morty em suas requisições, deselvolvida em crystal para o processo seletivo da Milênio Capital.
Sumário
Início Rápido
Executar o projeto: Docker
🚨 Importante 🚨
Antes de prosseguir confirme que possui o Docker e o Docker Compose instalados em sua máquina. Eles são necessários para seguir os proximos passos.Faça um clone do projeto na sua máquina:
git clone git@github.com:jallesbatista/Crystal-RickAndMorty-API.git
Entre na pasta do arquivo que clonou:
cd Crystal-RickAndMorty-API && code .
Execute o comando e aguarde as imagens serem compiladas e os containers executados, após isso a aplicação já estará pronta para uso:
docker compose up -d
Testes
🚨 Importante 🚨
Antes de prosseguir confirme que possui o Crystal instalado em sua máquina. Ele será necessário para se utilizar dos comando a seguir:Para executar os testes pelo módulo padrão utilize:
crystal spec
Caso queira rodar o arquivo de testes individualmente, ele também está localizado no diretório raiz, sendo necessário somente executar:
crystal runtest
Endpoints
Índice
🚨 Importante 🚨
Todas as rotas que recebem um id como parâmetro estão sujeitas a verificação do formato desse id. Não sendo um número inteiro será retornado o erro:Código do Erro | Descrição |
---|---|
400 Bad Request | "Id param must be an integer" |
1. Travel_stops
Método | Rota | Descrição |
---|---|---|
POST | /travel_stops | Criação de um plano de viagem. |
GET | /travel_stops | Listar todos os planos de viagem. |
GET | /travel_stops/:id | Buscar o plano de viagem referente ao id informado. |
PUT | /travel_stops/:id | Atualizar informações do plano de viagem referente ao id informado. |
DELETE | /travel_stops/:id | Deletar o plano de viagem referente ao id informado. |
1.1. Criação do plano de viagem
POST /travel_stops
Exemplo de Request:
POST /travel_stops
Host: http://localhost:3000
Authorization: None
Content-type: application/json
Exemplo de Corpo da Requisição:
{
"travel_stops": [1, 2, 3]
}
Exemplo de Response:
201 CREATED
{
"id": 1,
"travel_stops": [1, 2, 3]
}
Possíveis Erros:
Código do Erro | Descrição |
---|---|
404 Not Found | "Location with id # was not found" |
400 Bad Request | "travel_stops required" |
400 Bad Request | "Must be a array of integers" |
1.2 Listar todos os planos de viagem
GET /travel_stops
Query params:
-
optimize
Quando verdadeiro, o array de travel_stops é ordenado de maneira a otimizar a viagem. Ao receber esse parâmetro, a API retorna o array de `travel_stops` reordenado com o objetivo de minimizar o número de saltos interdimensionais e organizar as paradas de viagem passando das localizações menos populares para as mais populares.
-
expand
Ao receber esse parâmetro, a API deve expandir as paradas de cada viagem de modo que o campo `travel_stops` deixe de ser um array de inteiros representando os IDs de cada localização e passe a ser um array de objetos da forma:
{ "id": 1, "name": "Earth (C-137)", "type": "Planet", "dimension": "Dimension C-137" }
Populado com os dados da respectiva localização registrada na Rick and Morty API sob o dado ID. Para mais detalhes sobre a Rick and Morty API acesse: Rick and Morty API
Exemplo de Request:
GET /travel_stops
Host: http://localhost:3000
Authorization: None
Content-type: None
Exemplo de Corpo da Requisição:
Vazio
Exemplo de Response:
200 OK
[
{
"id": 1,
"travel_stops": [
1,
2,
3
]
},
...
]
1.3 Buscar plano de viagem
GET /travel_stops/:id
Query params:
Para mais detalhes veja a descrição.
optimize
expand
Exemplo de Request:
GET /travel_stops/1
Host: http://localhost:3000
Authorization: None
Content-type: None
Exemplo de Corpo da Requisição:
Vazio
Exemplo de Response:
200 OK
{
"id": 1,
"travel_stops": [1, 2, 3]
}
1.4 Atualizar plano de viagem
PUT /travel_stops/:id
Exemplo de Request:
PUT /travel_stops/1
Host: http://localhost:3000
Authorization: None
Content-type: application/json
Exemplo de Corpo da Requisição:
{
"travel_stops": [3, 4, 5]
}
Exemplo de Response:
200 OK
{
"id": 1,
"travel_stops": [3, 4, 5]
}
Possíveis Erros:
Código do Erro | Descrição |
---|---|
404 Not Found | "Location with id # was not found" |
400 Bad Request | "travel_stops required" |
400 Bad Request | "Must be a array of integers" |
1.5 Deletar o plano de viagem
DELETE /travel_stops/:id
Exemplo de Request:
DELETE /travel_stops/1
Host: http://localhost:3000
Authorization: None
Content-type: None
Corpo da Requisição:
Vazio
Exemplo de Response:
204 NO CONTENT
Vazio
Possíveis Erros:
Código do Erro | Descrição |
---|---|
404 Not Found | "Travel plan not found" |
Contributors
- Jalles Batista - creator and maintainer
Repository
Crystal-RickAndMorty-API
Owner
Statistic
- 0
- 0
- 0
- 0
- 4
- 10 months ago
- July 20, 2023
License
MIT License
Links
Synced at
Mon, 20 May 2024 11:25:12 GMT
Languages