Clone o projeto
git clone [email protected]:guilhermegattimarinho/blogs.git
Entre no diretório do projeto
cd blogs
Entre no diretório de backend
cd backend
Instale as dependências
npm install
Iicie os containers com docker
docker compose up -d --build
Entre no container
docker exect -it blogs_api bash
Crie o banco de dados
npm run presart
Popule as tabelas
npm run seed
Inicie o servidor
npm start
Bem-vindo à API de Gerenciamento de Blogs! Esta documentação deve ajudá-lo a se familiarizar com os recursos disponíveis e como consumi-los com solicitações HTTP.
Caso não possua uma conta, deverá criar-la e em seguida efetuar o login
"https://localhost/newUser"
Corpo da requisição:
{
"displayName": "New User",
"email": "[email protected]",
"password": "newUserPassword",
"image": "urlimage" --> opcional <--
},
...
Caso já possua uma conta, basta entrar com usuário e senha
"https://localhost/login"
Corpo da requisição:
{
"email": "[email protected]",
"password": "newUserPassword",
},
...
Ao efetuar o login com sucesso, receberá um token como o exemplo abaixo:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6OSwiaWF0IjoxNjk2MzczNDMwLCJleHAiOjE2OTg5NjU0MzB9.B_NiIm-KkbvMQ1_IjQHFUJqn_TzIDbN1mhoK5sTlNVM"
},
...
Possuindo um token de acesso, poderá realizar requisições livremente
"https://localhost/user"
[
{
"id": 1,
"displayName": "Morpheus",
"email": "[email protected]",
"image": "http://image.url.com"
},
{
"id": 2,
"displayName": "Neo",
"email": "[email protected]",
"image": "http://image.url.com"
}
]
"https://localhost/user/1"
{
"id": 1,
"displayName": "Morpheus",
"email": "[email protected]",
"image": "http://image.url.com"
}
"https://api.url.com/categories"
[
{
"id": 1,
"name": "Hello World"
},
{
"id": 2,
"name": "Matirx"
},
]
"https://localhost/post"
[
{
"id": 1,
"title": "Latest updates, August 1st",
"content": "The whole text for the blog post goes here in this key",
"userId": 1,
"published": "2023-10-03T23:26:53.000Z",
"updated": "2023-10-03T23:26:53.000Z",
"user": {
"id": 1,
"displayName": "morpheus",
"email": "[email protected]",
"image": "http://imageurl.com"
},
"categories": [
{
"id": 1,
"name": "Hello World"
},
{
"id": 2,
"name": "Matirx"
}
]
}
]
"https://localhost/post/1"
{
"id": 1,
"title": "Latest updates, August 1st",
"content": "The whole text for the blog post goes here in this key",
"userId": 1,
"published": "2023-10-03T23:26:53.000Z",
"updated": "2023-10-03T23:26:53.000Z",
"user": {
"id": 1,
"displayName": "morpheus",
"email": "[email protected]",
"image": "http://imageurl.com"
},
"categories": [
{
"id": 1,
"name": "Hello World"
},
{
"id": 2,
"name": "Matirx"
}
]
}
"https://localhost/post/search?q=latest"
[
{
"id": 1,
"title": "Latest updates, August 1st",
"content": "The whole text for the blog post goes here in this key",
"userId": 1,
"published": "2023-10-03T23:26:53.000Z",
"updated": "2023-10-03T23:26:53.000Z",
"user": {
"id": 1,
"displayName": "morpheus",
"email": "[email protected]",
"image": "http://imageurl.com"
},
"categories": [
{
"id": 1,
"name": "Hello World"
},
{
"id": 2,
"name": "Matirx"
}
]
}
]
post /login -> realiza o login de um usuario existente -> gera um barrer token que sera utilizado para acessar as proximas rotas
get /user -> lista com todos os usuarios -> é necessario ussar o token gerado no login na autorizathion
get /user/:id -> lista com usuario correspondente ao id -> é necessario ussar o token gerado no login na autorizathion
put /user/:id -> permite editar as informações de um usuario -> é necessario ussar o token gerado no login na autorizathion
delete /user/:id -> deleta usuario corresondete ao id -> é necessario ussar o token gerado no login na autorizathion
post /categories -> cria uma nova categoria mediante um nome (ex: {name: carros} -> é necessario ussar o token gerado no login na autorizathion
get /categories -> lista com todos as categorias -> é necessario ussar o token gerado no login na autorizathion
post /post -> cria um novo post mediante titulo, corpo e categorias -> é necessario ussar o token gerado no login na autorizathion
get /post -> lista com todos os posts -> é necessario ussar o token gerado no login na autorizathion
get /post/search?q= -> lista com todos os posts correspondentes ao termo de busca -> é necessario ussar o token gerado no login na autorizathion
get /post/:id -> lista com post correspondente ao id -> é necessario ussar o token gerado no login na autorizathion
put /post/:id -> atualiza o post correspondente ao id mediante titulo e corpo -> é necessario ussar o token gerado no login na autorizathion
delete /post/:id -> deleta o post correspondete ao id -> é necessario ussar o token gerado no login na autorizathion
Banco de dados relacional: MySQL
Back-end: Node, Express, Sequelize, Docker -> API Rest
Se você tiver algum feedback, por favor deixe-me saber por meio de [email protected]