Skip to content

API REST de notícias da Sala de Situação em Saúde - FS

License

Notifications You must be signed in to change notification settings

healthnewsapi/HealthNewsAPI

Repository files navigation

HealthNewsAPI

Build Status

API do Banco de dados de notícias da Sala de Situação em Saúde - FS

Tabela de conteúdo:

  1. Executando a aplicação
    1. Docker-compose
    2. NodeJs / yarn
    3. Personalizando as portas
  2. Visão geral da API
    1. Como Usar
    2. Autorização
    3. Rotas
  3. Executando os testes
  4. Construído com
  5. Versionamento
  6. Autores
  7. Licença

Executando a aplicação

Há duas formas disponíveis de executar a aplicação, via docker ou usando o NodeJS com yarn:

Executando a aplicação com o docker-compose

Baixe o arquivo do docker-compose

wget https://raw.githubusercontent.com/healthnewsapi/HealthNewsAPI/master/docker-compose.yml

Execute a aplicação

docker-compose up   # no caso de erro tente como root: sudo docker-compose up

Pronto! A aplicação está em execução, por padrão a aplicação está disponível na porta 8080

⬆ Voltar para o topo

Executando com NodeJs e Yarn

Para executar a aplicação você precisa de:

Clone o repositório

git clone https://github.com/healthnewsapi/HealthNewsAPI.git

Instale as dependências

yarn install

Inicie o ElasticSearch

docker run -p 9200:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.1.1

Por fim, execute a aplicação

yarn start

Pronto! A aplicação está em execução, por padrão a aplicação está disponível na porta 8080

⬆ Voltar para o topo

Personalizando as portas

Para executar a aplicação em uma porta diferente da padrão(8080), basta configurar a variável de ambiente SERVER_PORT_API:

export SERVER_PORT_API=8001
# Agora a aplicação vai estar disponível na porta 8001

Por padrão a aplicação espera que o elasticSearch esteja disponível na porta 9200, para alterar este cenário basta configurar a variável de ambiente URL_DB_NEWS:

export URL_DB_NEWS="http://localhost:9005"
# Agora a aplicação vai procurar pelo ElasticSearch nesta URL

⬆ Voltar para o topo

Visão geral da API

A API trabalha com o formato JSON, recomendamos o uso do header Content-Type: application/json

Como Usar

Autorização:

Para utilizar os métodos de busca não é necessário nenhum tipo de autenticação ou autorização, mas para o uso de metódos que modificam a base de dados, faz-se necessário o uso de uma autorização.

Para usar os métodos POST, PUT, PATCH, DELETE deve ser enviado um header Authorization do tipo Basic da seguinte forma:

Authorization: Basic <credentials>

Para o ambiente de desenvolvimento a API usa como valor padrão "dev:apikey", que será códificado no header como Authorization: Basic ZGV2OmFwaWtleQ==

⬆ Voltar para o topo

Rotas:

Listar notícias:

GET /noticias HTTP/1.1

Buscar notícia por ID:

GET /noticias/ID HTTP/1.1

Inserir uma nova notícia:

POST /noticias HTTP/1.1
Authorization: Basic ZGV2OmFwaWtleQ==
Content-Type: application/json; 

// O body da requisição deve conter o documento JSON a ser inserido
{
  "author": "Nome do autor",
  "content": "Esta é uma notícia sobre saúde...",
  "description": "Descrição da notícia",
  "event": [
    "dengue",
    "chuva"
  ],
  "publishedAt": "2019-06-07T17:32:28Z",
  "insertionDate": "2018-11-19",
  "score": 6.1,
  "source": "Nome do site da noticia",
  "title": "Titulo da noticia",
  "country": "BR",
  "region": "Centro-oeste",
  "uf": "DF",
  "url": "sitedanoticia.com/noticia1",
  "urlToImage": "sitedanoticia.com/noticia1/image.jpg"
}

Substituir uma notícia:

PUT /noticias/ID HTTP/1.1
Authorization: Basic ZGV2OmFwaWtleQ==
Content-Type: application/json; 

// O body da requisição deve conter o NOVO documento JSON a ser inserido no ID indicado
// Neste metódo toda a notícia é substituida. 
// Para alterar apenas os campos da notícia USE O MÉTODO PATCH
{
  "author": "Novo nome do autor",
  "content": "Esta é uma nova notícia sobre saúde...",
  "description": "Nova descrição da notícia",
  "event": [
    "Novo evento"
  ],
  "publishedAt": "2018-06-08T17:32:28Z",
  "insertionDate": "2019-02-03",
  "score": 6.3,
  "source": "Novo nome do site da noticia",
  "title": "Novo titulo da noticia",
  "country": "BR",
  "region": "Sul",
  "uf": "PR",
  "url": "novositedanoticia.com/noticia1",
  "urlToImage": "novositedanoticia.com/noticia1/image.jpg"
}

Modificar um ou mais campos de uma notícia:

PATCH /noticias/ID HTTP/1.1
Authorization: Basic ZGV2OmFwaWtleQ==
Content-Type: application/json; 

// O body da requisição deve conter o(s) campo(s) e o dado a ser modificado
{
    "source": "Nova Fonte da noticia",
    "event": ["estresse"]
}

Deletar uma notícia:

DELETE /noticias/ID  HTTP/1.1
Authorization: Basic ZGV2OmFwaWtleQ==

⬆ Voltar para o topo

Executando os testes

Inicie um container com ElasticSearch para testes. Usamos por padrão a porta 9001 para executar os testes

docker run -d -p 9001:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.1.1

Execute os testes

yarn test

* Para executar os testes em outra porta ou o banco em outra url basta configurar as variáveis de ambiente:

export SERVER_PORT_API_TEST=3002 # Porta para executar os testes

export URL_DB_NEWS_TEST="http://localhost:9005" # URL do ElasticSearch para testes

⬆ Voltar para o topo

Construído com:

Versionamento

Nós usamos SemVer para versionamento. Para mais versões Disponíveis, veja Versões.

Autores

Licença

Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.

⬆ Voltar para o topo

About

API REST de notícias da Sala de Situação em Saúde - FS

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages