Projeto feito no curso Trybe com objetivo de criar um CRUD a partir da criação de uma API RESTful utilizando as estruturas ORM e MSC.
- Utilizar as habilidades de associação do MySQL.
- Criar uma API utilizando o Sequelize e NodeJs.
- Validar e criptografar tokens de autenticação com o JWT.
- Realizar validações com o Joi.
- Faça o clone do projeto
- Entre no Visual Studio Code
- Instale as dependências
npm install
- Inicie a aplicação
npm run debug
POST /user
Corpo da requisição | Tipo | Descrição |
---|---|---|
displayName, email, password, image |
json |
Obrigatório. Todos os campos do corpo da requisição |
Formato do corpo da requisição
{
"displayName": "Nome da Pessoa",
"email": "[email protected]",
"password": "123456",
"image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/imagem.png"
}
Retorno em caso de sucesso
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImlkIjo1LCJkaXNwbGF5TmFtZSI6InVzdWFyaW8gZGUgdGVzdGUiLCJlbWFpbCI6InRlc3RlQGVtYWlsLmNvbSIsImltYWdlIjoibnVsbCJ9LCJpYXQiOjE2MjAyNDQxODcsImV4cCI6MTYyMDY3NjE4N30.Roc4byj6mYakYqd9LTCozU1hd9k_Vw5IWKGL4hcCVG8"
}
O retorno acima é apenas fictício
GET /user/
Authentication
com o token JWT recebido anteriormente
Retorno em caso de sucesso
[
{
"id": "401465483996",
"displayName": "Brett Wiltshire",
"email": "[email protected]",
"image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
}
]
Descrição |
---|
Será retornado um array com todos os usuários do banco de dados |
GET /user/${id}
Authentication
com o token JWT recebido anteriormente
Parâmetro | Tipo | Descrição |
---|---|---|
id |
string |
Obrigatório. O ID do usuário que você quer |
Retorno em caso de sucesso
{
"id": "401465483996",
"displayName": "Brett Wiltshire",
"email": "[email protected]",
"image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
}
Descrição |
---|
Será retornado o usuário com o id especificado |
POST /login
Corpo da requisição | Tipo | Descrição |
---|---|---|
email, password |
json |
Obrigatório. Todos os campos do Corpo da requisição devem existir no banco de dados |
Formato do corpo da requisição
{
"email": "[email protected]",
"password": "123456"
}
Retorno em caso de sucesso
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImlkIjo1LCJkaXNwbGF5TmFtZSI6InVzdWFyaW8gZGUgdGVzdGUiLCJlbWFpbCI6InRlc3RlQGVtYWlsLmNvbSIsImltYWdlIjoibnVsbCJ9LCJpYXQiOjE2MjAyNDQxODcsImV4cCI6MTYyMDY3NjE4N30.Roc4byj6mYakYqd9LTCozU1hd9k_Vw5IWKGL4hcCVG8"
}
O retorno acima é apenas fictício
POST /categories
Corpo da requisição | Tipo | Descrição |
---|---|---|
name |
json |
Obrigatório. O nome da categoria deve ser obrigatório |
Authentication
com o token JWT recebido anteriormente
Formato do corpo da requisição
{
"name": "Ação"
}
Retorno em caso de sucesso
{
"id": 1
"name": "Ação"
}
GET /categories
Authentication
com o token JWT recebido anteriormente
Retorno em caso de sucesso
[
{
"id": 1,
"name": "Escola"
},
{
"id": 2,
"name": "Inovação"
}
]
Descrição |
---|
Será retornado todas as categorias do Banco de Dados |
POST /post
Corpo da requisição | Tipo | Descrição |
---|---|---|
title, content, categoryIds |
json | Obrigatório. Todos os campos devem ser obrigatórios |
Authentication
com o token JWT recebido anteriormente
Formato do corpo da requisição
{
"title": "Titulo da publicação",
"content": "Conteudo da publicação aqui",
"categoryIds": [1, 2] //id das categorias criadas anteiormente, deve ser somente um array.
}
Retorno em caso de sucesso
{
"id": "$id da publicação",
"userId": 1, // usuário autenticado
"title": "Titulo da publicação",
"content": "Conteudo da publicação aqui"
}
GET /categories
Authentication
com o token JWT recebido anteriormente
Retorno em caso de sucesso
[
{
"id": 1,
"title": "Post do Ano",
"content": "Melhor post do ano",
"userId": 1,
"published": "2011-08-01T19:58:00.000Z",
"updated": "2011-08-01T19:58:51.000Z",
"user": {
"id": 1,
"displayName": "Lewis Hamilton",
"email": "[email protected]",
"image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2017_Malaysia.jpg"
},
"categories": [
{
"id": 1,
"name": "Inovação"
}
]
}
]
Descrição |
---|
Será retornado todas as publicações do Banco de Dados, com sua categoria e o autor |
Copyright © 2021 Michael Caxias