O BlogList API permite aos usuários salvar informações sobre blogs interessantes que encontram pela internet. Com o BlogList, você pode criar sua própria biblioteca pessoal de blogs favoritos, mantendo o controle de autores, títulos, URLs e a quantidade de votos positivos de outros usuários da aplicação.
Clone o projeto
git clone https://github.com/patrickmps/bloglist.gitEntre no diretório do projeto
cd bloglistInstale as dependências
npm installInicie o servidor
npm startPara rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env
MONGODB_URI - uri do banco MongoDB
PORT - porta na qual irá rodar o server, por padrão está 3001
TEST_MONGODB_URI - uri do banco MongoDB para testes
SECRET - string usada para gerar o token JWT
GET /api/blogs-
Response 200 (application/json)
[ { "title": "React patterns", "author": "Michael Chan", "url": "https://reactpatterns.com/", "likes": 7, "user": { "username": "root", "name": "Superuser", "id": "65232e0901ea275e5bc8531b" }, "id": "6523554c0aa5a2931c23e086" }, { "title": "React patterns", "author": "Michael Chan", "url": "https://reactpatterns.com/", "likes": 7, "user": { "username": "root", "name": "Superuser", "id": "65232e0901ea275e5bc8531b" }, "id": "652359374dd34402dbb0321c" }, ... ]
POST /api/blogs-
Request (application/json)
-
Headers
Authorization: Bearer [access_token] -
Body
{ "title": "Tulio Calil Dev", "author": "Tulio Calil", "url": "https://tuliocalil.com", "likes": 29 }
-
-
Response 201 (application/json)
{ "title": "Tulio Calil Dev", "author": "Tulio Calil", "url": "https://tuliocalil.com", "likes": 29, "user": "652be8b022111afd709708b5", "id": "652d7c3d3839ac5b34e1d3ad" }
GET /api/blogs/${id}| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
string |
Obrigatório. O ID do blog que você quer |
-
Response 200 (application/json)
{ "title": "Tulio Calil Dev", "author": "Tulio Calil", "url": "https://tuliocalil.com", "likes": 29, "user": "652be8b022111afd709708b5", "id": "652d7c3d3839ac5b34e1d3ad" }
PUT /api/blogs/${id}| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
string |
Obrigatório. O ID do blog que você quer |
-
Request (application/json)
-
Body
{ "likes": 35 }
-
-
Response 200 (application/json)
{ "title": "Tulio Calil Dev", "author": "Tulio Calil", "url": "https://tuliocalil.com", "likes": 35, "user": "652be8b022111afd709708b5", "id": "652d7c3d3839ac5b34e1d3ad" }
DEL /api/blogs/${id}| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
string |
Obrigatório. O ID do blog que você quer |
Obs.: para deletar um blog é preciso ser o usuário que o adicionou.
-
Request (application/json)
-
Headers
Authorization: Bearer [access_token]
-
-
Response 204
GET /api/users-
Response 200 (application/json)
[ { "username": "root", "name": "Superuser", "blogs": [ { "title": "React patterns", "author": "Michael Chan", "url": "https://reactpatterns.com/", "likes": 7, "id": "652359374dd34402dbb0321c" } ] }, { "username": "superroot", "name": "Superuser", "blogs": [], "id": "652c592fe49c2dc01a25c681" } ]
POST /api/users-
Request (application/json)
-
Body
{ "username": "patrickmps", "name": "Patrick Mota", "password": "senha321" }
-
-
Response 201 (application/json)
{ "username": "patrickmps", "name": "Patrick Mota", "blogs": [], "id": "652d88d5b79d74c37e6ce558" }
POST /api/login-
Request (application/json)
-
Body
{ "username": "patrickmps", "password": "senha321" }
-
-
Response 201 (application/json)
{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImthbGlsMzIiLCJpZCI6IjY1MmJlOGIwMjIxMTFhZmQ3MDk3MDhiNSIsImlhdCI6MTY5NzQ3OTYyMSwiZXhwIjoxNjk3NDgzMjIxfQ.xkOd_EdpfdIs_cbNJInwEWmrPKauLCOznyYL8zFnSII", "username": "patrickmps", "name": "Patrick Mota" }
Para rodar os testes, rode o seguinte comando
npm run test