API do Banco de dados de notícias da Sala de Situação em Saúde - FS
- Executando a aplicação
- Visão geral da API
- Executando os testes
- Construído com
- Versionamento
- Autores
- Licença
Há duas formas disponíveis de executar a aplicação, via docker ou usando o NodeJS com yarn:
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
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
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
A API trabalha com o formato JSON, recomendamos o uso do header Content-Type: application/json
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==
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==
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
Nós usamos SemVer para versionamento. Para mais versões Disponíveis, veja Versões.
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.