Blogs API é uma API REST de um sistema de blog onde é possível se registrar, fazer login, fazer o CRUD de um post e definir categorias que serão usadas nos posts. Esta API faz uso do JWT para gerenciamento de sessão.
Feito utilizando a arquitetura MSC e coberto por testes de integração.
Back-End:
NodeJS, Express, Joi, Sequelize, JWT
Banco de dados:
MySQL
Testes:
Mocha, Chai
- HOSTNAME=
nome do host mysql
- MYSQL_USER=
nome do usuário mysql
- MYSQL_PASSWORD=
senha do mysql
- MYSQL_SCHEMA=blogs_api
- MYSQL_SCHEMA_TEST=blogs_api_test
- JWT_SECRET=
segredo do JWT
-
Instale as dependências
npm install
-
Inicie o servidor http
npm start
-
Instale as dependências
npm install
-
Rode o comando que executa os testes
npm test
-
*Para testar um arquivo específico use a variável de ambiente NAME
NAME=user npm test
POST /user
Exemplo de body:
{
"displayName": "Lewis Hamilton",
"email": "lewishaamilton@gmail.com",
"password": "123456",
"image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg"
}
POST /login
Exemplo de body:
{
"email": "lewishaamilton@gmail.com",
"password": "123456"
}
Os endpoints abaixo precisam que o token gerado ao fazer login ou ao se registrar seja passado no header Authorization
.
GET /user
GET /user/{id}
DELETE /user/me
POST /categories
Exemplo de body:
{
"name": "Comunicação"
}
GET /categories
POST /post
Exemplo de body:
{
"title": "Hollow Knight",
"content": "Best metroidvania game ever made.",
"categoryIds": [1, 2]
}
GET /post
GET /post/{id}
GET /post/search?q={searchTerm}
PUT /post/{id}
Exemplo de body:
{
"title": "Hollow Knight",
"content": "Best metroidvania game ever made."
}
Observação: apenas o autor do post pode alterá-lo e não é possível mudar as categoryIds.
DELETE /post/{id}
Observação: apenas o autor do post pode deletá-lo.