Code Monkey home page Code Monkey logo

lucas-de-lima / travels_booker_api Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 38 KB

A API Multiverse Travels Booker é uma API desenvolvida em Crystal com o framework Lucky, que permite planejar e reservar viagens interdimensionais no universo de Rick and Morty. Desenvolvido como parte de um 'Code Challenge' disposto por uma empresa.

License: MIT License

Crystal 79.11% Procfile 0.07% Shell 19.48% Dockerfile 1.34%
crystal crystal-lang lucky-framework rick-and-morty rickandmortyapi

travels_booker_api's Introduction

Multiverse Travels Booker API

A API Multiverse Travels Booker é uma API desenvolvida em Crystal com o framework Lucky, que permite planejar e reservar viagens interdimensionais no universo de Rick and Morty. Com recursos simples, como criação, obtenção, atualização e exclusão de planos de viagem, a API oferece uma interface intuitiva para explorar diferentes realidades. Desenvolvida com desempenho e confiabilidade em mente, a API Multiverse Travels Booker é a sua porta de entrada para aventuras emocionantes e descobertas em múltiplas dimensões. Prepare-se para uma jornada sem limites e divirta-se explorando novos mundos com a ajuda dessa poderosa ferramenta tecnológica!

Configuração do Ambiente

Para configurar o ambiente de desenvolvimento da API, você precisará ter o Docker e o Docker Compose instalados em sua máquina. Essas ferramentas facilitarão a criação e execução dos containers necessários para a aplicação.

Iniciando

Ir para o topo

Clone o repositório:

git clone {chave ssh do repositório}

Entre na pasta:

cd {diretório do projeto após o clone}

Suba tudo com docker compose:

docker-compose up

Após esse comando, se você não usou a flag -d (docker-compose up -d), podera visualizar os logs das requisições aos endpoints

Diretórios

Ir para o topo

O diretório principal, que contém todos os endpoints pode ser encontrado em:

travels_booker_api/src/actions/travel_plans/index.cr

As models estão em:

travels_booker_api/src/models

As migrations estão em:

travels_booker_api/db/migrations

Endpoints

Ir para o topo

Utilidade - Na raiz do projeto existe um arquivo chamado thunder-collection_Travels Booker.json Ele contém todas as rotas suportadas por essa API, assim você não terá necessidade de criar as rotas manualmente. Ele pode ser facilmente importado na sua extenção do VsCode, o Thunder Client basta importar esse aquivo na seção de Collections

A API Multiverse Travels Booker oferece uma variedade de endpoints para facilitar o planejamento de viagens no universo de Rick and Morty. Esses endpoints permitem aos usuários criar novos planos de viagem, obter uma visão geral de todos os planos existentes, acessar detalhes de planos específicos, atualizar planos existentes e excluir planos de viagem.

Query parameters Essa API pode usar query parameters, que são os seguintes:

  • optimize (boolean - falso por padrão): Quando verdadeiro, o array de travel_stops é ordenado de maneira a otimizar a viagem.
  • expand (boolean - falso por padrão): Quando verdadeiro, o campo de travel_stops é um array de entidades com informações detalhadas sobre cada parada. Exemplo:
GET /travel-plans?optimize=false&expand=true

POST /travel-plans

Este endpoint é utilizado para criar um novo plano de viagem com base nas paradas fornecidas.

Exemplo:
/travel-plans

Corpo da Requisição:

{
  "travel_stops": [1, 2]
}

Resposta:

Em caso de sucesso, a resposta será um objeto contendo o id, e travel_stops com um array de inteiros referente aos stops fornecidos no body, e status 200:

{
  "id": 1,
  "travel_stops": [1, 2]
}

GET /travel-plans

Este endpoint retorna uma lista de todas as travels registadas no banco de dados, com status 200.

Exemplo:
/travel-plans

Resposta:

[
  {
    "id": 1,
    "travel_stops": [1,2]
  },
  {
    "id": 2,
    "travel_stops": [3,4]
  }
]

GET /travel-plans?expand=true

Este endpoint retorna uma lista de travels que se alteram em relação ao termo de busca "expand", com status 200.

Exemplo:
/travel-plans?expand=true

Em caso da requisição receber um parametro query /travel-plans?expand=true, a resposta sera um array com id, e travel_stops com os detalhes de cada stop fornecido no body:

Resposta:

[
  {
    "id": 1,
    "travel_stops": [
      {
        "id": 1,
        "name": "Earth (C-137)",
        "dimension": "Dimension C-137",
        "type": "Planet"
      },
      {
        "id": 2,
        "name": "Abadango",
        "dimension": "unknown",
        "type": "Cluster"
      }
    ]
  },
  {
    "id": 2,
    "travel_stops": [
      {
        "id": 3,
        "name": "Citadel of Ricks",
        "dimension": "unknown",
        "type": "Space station"
      },
      {
        "id": 4,
        "name": "Worldender's lair",
        "dimension": "unknown",
        "type": "Planet"
      }
    ]
  }
]

GET /travel-plans/{id}

Este endpoint retorna uma travel especifica buscando pelo id, com status 200.

Exemplo:
/travel-plans/1

Resposta:

{
    "id": 1,
    "travel_stops": [1, 2]
}

GET /travel-plans/{id}/?expand=true

Este endpoint é utilizado para buscar uma travel pelo {id} com o parametro de query "expand=true".

Em caso de sucesso, a resposta será o travel_stops com os detalhes de cada stop, com status 200.

Exemplo:
/travel-plans/1/?expand=true

Resposta:

{
  "id": 1,
  "travel_stops": [
    {
      "id": 1,
      "name": "Earth (C-137)",
      "dimension": "Dimension C-137",
      "type": "Planet"
    },
    {
      "id": 2,
      "name": "Abadango",
      "dimension": "unknown",
      "type": "Cluster"
    }
  ]
}

PUT /travel-plans/{id}

Este endpoint é utilizado para atualizar uma travel pelo {id}.

Em caso de sucesso, a resposta será uma travel com os travel_stops atualizados com as informações recebidas no corpo da requisição, com status 200.

Exemplo:
/travel-plans/1

Corpo da requisição:

{
  "travel_stops": [5,6]
}

Resposta:

{
  "id": 1,
  "travel_stops": [5,6]
}

DELETE /travel-plans/{id}

Este endpoint remove uma travel do banco de dados com base no {id} fornecido:

Em caso de sucesso a resposta sera vazia, com status 204.

Exemplo:
/travel-plans/1

Resposta:


Lista de Tarefas

Ir para o topo

Ir para o começo

[ ] query parameters = optimize - Ao receber esse parâmetro, a API deve retornar 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. Para tanto, deve-se visitar todas as localizações de uma mesma dimensão antes de se pular para uma localização de outra dimensão.

[ ] Lançamentos de erros personalizados - É possivel usar begin para tentar executar um bloco de código, e raise para levantar uma exeção no caso de algum erro acontecer no escopo do begin.

travels_booker_api's People

Contributors

lucas-de-lima avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.