Este projeto é uma API desenvolvida em Node.js
e Express
e que pode ser acessado através do site Article List API
É uma API que obtém, cria, deleta e altera artigos. Além disso, ele também possui um simples web crawler que acessa determinados sites e retorna uma lista dos seus artigos.
- Node.js v16.13.2
- Express 4.18.1
- Body-parser 1.20.0
- Cheerio 1.0.0-rc.12
- Cors 2.8.5
- Got 11.8.3
- Uuid 9.0.0
É importante dizer que esta API salva os dados de maneira interna, através de um array no próprio código. Isso acontece porque o objetivo deste projeto é apenas de estudo e análise. Porém, o correto seria que tais dados fossem salvos em um banco de dados (com as devidas permissões para determinados usuários) para que eles ficassem persistentes, confiáveis e seguros.
Clone este repositório e após isso instale as dependencias do projeto utilizando o seguinte comando:
$ npm install
Execute a aplicação com o comando npm start
, ele irá iniciar o programa em localhost:3003
$ npm start
É possível adicionar, alterar e remover os artigos. Para realizar tais ações, basta acessar os métodos descritos abaixo
Método | Endpoint | Descrição |
---|---|---|
GET |
/articles |
Retorna todos os artigos salvos |
GET |
/articles/:id |
Retorna apenas um artigo, de acordo com o id fornecido |
POST |
/articles |
Adiciona um artigo e retorna o ultimo artigo adicionado |
PUT |
/articles/:id |
Altera um artigo e retorna o artigo alterado |
DELETE |
/articles/:id |
Deleta um artigo, de acordo com o id fornecido |
GET
- Request
localhost:3003/articles ou https://article-list-api.onrender.com/articles
- Response
[
{
"id":"d6e17e23-010b-4177-b519-7a87a5d1876f",
"titulo":"O que são testes automatizados",
"link":"https://devgo.com.br/o-que-sao-testes-automatizados",
"data":"2022-09-18T21:52:55.108Z"
}
]
POST
- Request
Para realizar um POST, utilize um software como o Postman e observe a imagem abaixo:
Atenção para o fato de que no Body o formato a ser usado é o x-www-form-urlencoded
e de que os atributos titulo
e link
são obrigatórios.
O URL pode ser um dos dois:
localhost:3003/articles:id ou https://article-list-api.onrender.com/articles
- Response
{
"id": "0ed15894-59b5-4857-8730-287b522cebc7",
"titulo": "Um novo artigo",
"link": "https://example.com",
"data": "2022-09-24T21:47:20.018Z"
}
PUT
- Request
Para realizar um PUT, utilize um software como o Postman e observe a imagem abaixo:
Atenção para o fato de que no Body o formato a ser usado é o x-www-form-urlencoded
O URL pode ser um dos dois:
localhost:3003/articles/:id ou https://article-list-api.onrender.com/articles/:id
Em que o :id
é o id do artigo a ser modificado
- Response
{
"id": "0ed15894-59b5-4857-8730-287b522cebc7",
"titulo": "Um novo artigo parte 2",
"link": "https://example2.com",
"data": "2022-09-24T21:47:20.018Z"
}
DELETE
- Request
Para realizar um DELETE, utilize um software como o Postman e observe a imagem abaixo:
O URL pode ser um dos dois:
localhost:3003/articles/:id ou https://article-list-api.onrender.com/articles/:id
Em que o :id
é o id do artigo a ser deletado
- Response
The article was sucessfully deleted
É possível obter uma lista dos sites em que existe um web crawler implementado e também uma lista dos artigos que cada site possui. Para realizar tais ações, basta acessar os métodos descritos abaixo
Método | Endpoint | Descrição |
---|---|---|
GET |
/webcrawlers |
Retorna os nomes dos sites em que é possível realizar webcrawler |
GET |
/webcrawlers/:site |
Retorna uma lista dos artigos do site fornecido |
Em que :site
é o site que deseja realizar um web crawler e obter os seus artigos. Atualmente, apenas o site DevGo
está implementado.
GET /webcrawlers
- Request
localhost:3003/webcrawlers ou https://article-list-api.onrender.com/webcrawlers
- Response
[
{
"nome": "DevGo"
}
]
GET /webcrawlers/devgo
- Request
localhost:3003/webcrawlers/devgo ou https://article-list-api.onrender.com/webcrawlers/devgo
- Response
[
{
"titulo": "O que são testes automatizados",
"link": "https://devgo.com.br/o-que-sao-testes-automatizados"
},
{
"titulo": "Como fazemos o Gitflow",
"link": "https://devgo.com.br/como-fazemos-o-gitflow"
},
{
"titulo": "O que é Atomic Design",
"link": "https://devgo.com.br/o-que-e-atomic-design"
},
.
.
.
]