Skip to content

ehomrich/recipes-api

Repository files navigation

Recipes API

API em Node.js para encontrar receitas a partir de ingredientes.

Pré-requisitos e dependências

Este projeto foi construído com as seguintes dependências:

Primeiros passos

Para obter uma cópia do projeto, clone este repositório executando o comando abaixo:

git clone https://github.com/ehomrich/recipes-api
cd recipes-api/

Insira sua chave de acesso à API do Giphy na variável GIPHY_API_KEY em config/.env.example e renomeie o arquivo para .env (para maiores informações, consulte Configuração).

Em seguida, você pode instalar os pacotes localmente e executar o projeto ou construir e executar um container do Docker.

Executando localmente

Instale as dependências com o gerenciador de pacotes de sua preferência e execute a aplicação com os comandos abaixo:

# yarn
yarn install
yarn start

# npm
npm install
npm start

Faça uma requisição à localhost:3000 e você deverá receber como resposta:

{
  "message": "Hello world!"
}

Para fazer uso da API, consulte a referência.

Executando via Docker

Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina.

Para auxiliar na utilização do Docker, o projeto disponibiliza os arquivos Dockerfile e docker-compose.yml na raiz do projeto.

Para construir a imagem do serviço, execute o comando:

docker-compose -f docker-compose.yml build

Para executar o projeto, utilize o comando:

docker-compose -f docker-compose.yml up

Configuração

O projeto depende de três variáveis armazenadas em um arquivo de ambiente (.env), no formato VAR=valor.

As variáveis são:

  • GIPHY_API: URL da API de buscas do Giphy. Obrigatória.

Padrão: http://api.giphy.com/v1/gifs/search

  • GIPHY_API_KEY: chave de acesso à API do Giphy. Obrigatória.

Chaves podem ser solicitadas seguindo a documentação disponível em: https://developers.giphy.com/docs/

  • RECIPE_PUPPY_API: URL da API pública do Recipe Puppy. Obrigatória.

Padrão: http://www.recipepuppy.com/api/

Um arquivo de modelo é disponibilizado em config/.env.example. Basta criar uma cópia na mesma pasta, editar e renomear.

Se alguma das variáveis não for preenchida, será lançado um erro Improperly configured.

Referência da API

A API do projeto possui apenas um endpoint:

GET /recipes/

Este endpoint espera um parâmetro i, contendo uma lista de ingredientes, respeitando a seguinte chamada:

http://{HOST}/recipes/?i={ingredient_1},{ingredient_2},{ingredient_3}

O parâmetro i deve obrigatoriamente possuir de 1 a 3 ingredientes.

A partir dos ingredientes informados, é realiza uma consulta à API do Recipe Puppy, e consultas à API do Giphy baseadas no título de cada receita obtida.

Exemplo:

http://localhost:3000/recipes/?i=onions,garlic

A resposta desta requisição será semelhante à seguinte:

{
   "keywords":[
      "onions",
      "garlic"
   ],
   "recipes":[
      {
         "title":"Roasted Garlic Grilling Sauce",
         "ingredients":[
            "garlic",
            "hot sauce",
            "onions"
         ],
         "link":"http://www.kraftfoods.com/kf/recipes/roasted-garlic-grilling-sauce-56344.aspx",
         "gif":"https://media1.giphy.com/media/Q4PcMC8apFXBm/giphy.gif"
      },
      {
         "title":"Steamed Mussels I",
         "ingredients":[
            "garlic",
            "mussels",
            "onions"
         ],
         "link":"http://allrecipes.com/Recipe/Steamed-Mussels-I/Detail.aspx",
         "gif":"https://media1.giphy.com/media/iix3nosdByWLm/giphy.gif"
      },
      ...
   ]
}

A API do Recipe Puppy retorna, por padrão, 10 receitas por página.


Erros

Parâmetros i de entrada que não possuam de 1 a 3 ingredientes receberão como resposta o seguinte erro:

{
  "status": 400,
  "error": "Invalid parameter",
  "message": "Incorrectly formatted request or missing required parameters"
}

Problemas relacionados à indisponibilidade das APIs do Recipe Puppy e do Giphy, bem como falhas de autenticação e de processamento destes serviços gerarão respostas no formato acima.

About

API em Node.js para encontrar receitas a partir de ingredientes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published