A Api irĆ” fornecer dados para o protĆ³tipo disponibilizado no Link
A aplicaĆ§Ć£o deverĆ” ser feita em utilizando express com o (sequelize) ou adonisjs. Os mĆ©todos get, post, put, devem ser coerentes com os retornos necessĆ”rios definidos no protĆ³tipo. Ex: na tela de repositĆ³rios Ć© necessĆ”rio retornar um objeto { data: (array de repositĆ³rio com suas respectivas stars), count: quantidade de itens retornados. }
CRUD de users (nome, email, localizaĆ§Ć£o, avatar, username, bio). Um usuĆ”rio deve ser Ćŗnico
O mĆ©todo de autenticaĆ§Ć£o devera buscar se o usuĆ”rio esta cadastrado na tabela users, se sim retornar os dados com sucesso, e armazenar o id do usuĆ”rio e a data da requisiĆ§Ć£o em uma tabela chamada Tokens.
CRUD de follower (todo follower deve ser um usuĆ”rio, criar a relaĆ§Ć£o pertinente para follower e user).
CRUD de following (todo following deve ser um usuĆ”rio, criar a relaĆ§Ć£o pertinente para following e user).
CRUD de repositories (nome, description, public, slug). A propriedade slug deve ser concatenada com o nome de usuĆ”rio e o nome do repositĆ³rio.
CRUD de repositories stars (Esse crud devera manter a relaĆ§Ć£o de usuĆ”rios que deram stars para um repositĆ³rio, criar relaĆ§Ć£o pertinente entre users, repositories).
GostarĆamos de ver os campos necessĆ”rios para os endpoints fossem validados na request, opcional.
Antes de comeƧar, vocĆŖ vai precisar ter instalado em sua mĆ”quina as seguintes ferramentas: Git, Node.js. AlĆ©m disto Ć© bom ter um editor para trabalhar com o cĆ³digo como o VSCode
š Para rodar a aplicaĆ§Ć£o
# Clone este repositĆ³rio
$ git clone https://github.com/Gabriel52/Nodejs-ApiRest
# Execute o comando para instalar todas as dependĆŖncias
$ npm install ou yarn
# Execute a aplicaĆ§Ć£o em modo de desenvolvimento, Ć© importante executar este
$ nodemon server.js ou yarn start
# A aplicaĆ§Ć£o web serĆ” aberta na porta:8000 - acesse http://localhost:8000/api/v1/
Node.js (Back-End);
Sequelize;
JsonWebToken
Eslint
MySQL (Banco de Dados);
LanƧado em 2021 š
Feito por Gabriel Brune š. Este projeto estĆ” sobre a licenƧa do MIT
Dar uma ā se este projeto te ajudou
Sinta-se Ć vontade para registrar um novo problema com o respectivo tĆtulo e descriĆ§Ć£o no repositĆ³rio Nodejs-ApiRest. Se vocĆŖ jĆ” encontrou uma soluĆ§Ć£o para seu problema, eu adoraria revisar sua solicitaĆ§Ć£o de pull !
Este endpoint fica responsavel pela autenticaĆ§Ć£o do usuĆ”rio, retornando seu respectivo token
name, email
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NiwiZW1haWwiOiJndXN0YXZvX2d1YW5hYmFy2432324324YTg5QG91dGxvb2suY29tIiwiaWF0IjoxNjE0MDMzNjM5LCJleHAiOjE2MTQxMjAwMzl9.6X4t0WotBkei7BlXYgJM01tTv1xYdR-1-sXjEboZu9U",
"user": {
"email": "gustavo_guanabara89@outlook.com",
"id": 6
}
}
Este endpoint retorna a data e em os usuƔrios se logaram
nenhum
{
"success": true,
"data": [
{
"id": 1,
"user_id": 6,
"created_at": "2021-02-22T22:40:39.000Z",
"updated_at": "2021-02-22T22:40:39.000Z",
"User": {
"id": 6,
"name": "Gustavo Guanabara",
"email": "gustavo_guanabara89@outlook.com",
"status": "A",
"localization": "Ponta Negra - RN",
"username": "@gafanhoto",
"bio": "Esta bio Ć© apenas um teste",
"created_at": "2021-02-22T22:39:39.000Z",
"updated_at": "2021-02-22T22:39:39.000Z"
}
}
]
}
Este endpoint fica responsavel pela criaĆ§Ć£o de usuĆ”rios
name, email, password, username, localization, bio
{
{
"success": true,
"message": "Beatriz Rodrigues criado com sucesso"
}
}
Este endpoint retorna todos os usuƔrios
nenhum
{
"success": true,
"data": [
{
"id": 1,
"name": "Phelipe Coutinho",
"email": "paulinho52@gmail.co",
"status": "A",
"localization": "Macaiba - RN",
"username": "Coutinho58",
"bio": "Esta bio Ć© apenas um teste",
"created_at": "2021-02-22T22:29:47.000Z",
"updated_at": "2021-02-22T22:44:02.000Z"
},
{
"id": 2,
"name": "Marcus Oliveira",
"email": "marcus@gmail.co",
"status": "A",
"localization": "TaboĆ£o - SP",
"username": "Marcus_Oliveira",
"bio": "Esta bio Ć© apenas um teste",
"created_at": "2021-02-22T22:30:41.000Z",
"updated_at": "2021-02-22T22:30:41.000Z"
},
}
Este endpoint fica responsavel por desativar usuƔrios
nenhum
{
{
"success": true,
"message": "Beatriz Rodrigues criado com sucesso"
}
}
Este endpoint fica responsavel por atualizar usuƔrio
name, username, localization, bio
{
{
"success": true,
"message": "Atualizado com sucesso"
}
}
Este endpoint fica responsavel por criar uma foto e a vincular com um usuƔrio
file, user_id
{
"success": true,
"message": "Foto salva com sucesso",
"file": {
"fieldname": "file",
"originalname": "perfil.jpg",
"encoding": "7bit",
"mimetype": "image/jpeg",
"destination": "C:\\Users\\gabri\\Documents\\challenge\\challengeLuby\\uploads",
"filename": "1614033965879_6.jpg",
"path": "C:\\Users\\gabri\\Documents\\challenge\\challengeLuby\\uploads\\1614033965879_6.jpg",
"size": 27569
}
}
Este endpoint fica responsavel por seguir um usuƔrio
following
{
"success": true,
"message": "VocĆŖ estĆ” seguindo Gustavo Guanabara"
}
Este endpoint fica responsavel por mostar quem vocĆŖ estĆ” seguindo
nenhum
{
"success": true,
"data": [
{
"id": 2,
"name": "Marcus Oliveira",
"username": "Marcus_Oliveira",
"user_id": 6,
"following": 2
},
{
"id": 1,
"name": "Phelipe Coutinho",
"username": "Coutinho58",
"user_id": 6,
"following": 1
}
],
"amount": 2
}
Este endpoint fica responsavel por mostar quem estĆ” te seguindo
nenhum
{
"success": true,
"data": [
{
"id": 3,
"name": "Gabriel Brune",
"username": "@Gabriel_Brune",
"user_id": 3,
"following": 6
},
{
"id": 4,
"name": "Mario Souto",
"username": "@Mario_Soutinho",
"user_id": 4,
"following": 6
},
{
"id": 6,
"name": "Gustavo Guanabara",
"username": "@gafanhoto",
"user_id": 6,
"following": 6
}
],
"amount": 3
}
Este endpoint fica responsavel por criar um repositorio
name:String, description: String, public: Boolean
{
"success": true,
"message": "CRUD em C# criado com sucesso"
}
Este endpoint retorna todos os repositorios daquele usuƔrio
nenhum
{
"success": false,
"data": [
{
"id": 3,
"user_id": 6,
"name": "Blog Guiapress",
"description": "O GuiaPress Ć© uma plataforma que foi criado como uma pagina de busca para conteĆŗdos educacionais. Aqui vocĆŖ pode encontrar o trabalho de escola, artigos, atividades infantis entre outras coisas.",
"slug": "Gustavo-Guanabara-Blog-Guiapress",
"status": "A",
"public": 1,
"created_at": "2021-02-23T02:03:31.000Z",
"updated_at": "2021-02-23T02:03:31.000Z"
},
{
"id": 4,
"user_id": 6,
"name": "Escala",
"description": "O projeto tem o objetivo de diminuir o Ćndice de evasĆ£o escolar, os principais motivos que identificamos foi a falta de motivaĆ§Ć£o e a necessidade de arrumar um emprego, por isso criamos uma plataforma que permite as escolas cadastrarem seus professores e turmas, os professores ficam responsĆ”veis por cadastrar os alunos e os desafios para eles realizarem, eles sĆ£o recompensados por Reason Coin(moeda virtual), e uma oportunidade de serem vistos pelas empresas, jĆ” que as empresas conseguem realizar uma busca customizada por filtros, procurando estudantes com o perfil respectivo a vaga.",
"slug": "Gustavo-Guanabara-Escala",
"status": "A",
"public": 1,
"created_at": "2021-02-23T02:04:37.000Z",
"updated_at": "2021-02-23T02:04:37.000Z"
}
],
"amount": 2
}
Este endpoint fica responsavel por deletar um repositorio
id:int
{
"success": true,
"message": "Excluido com sucesso"
}
Este endpoint fica responsavel por dar estrela em um repositorio
repository_id: Integer
{
"success": true,
"message": "VocĆŖ acabou de dar estrela no repositorio Blog Guiapress"
}
Este endpoint fica responsavel por mostar as estrela de um repositorio
repository: Integer
{
"success": true,
"data": [
{
"name": "Blog Guiapress",
"username": "@Gabriel_Brune",
"user_id": 3,
"repository_id": 3,
"status": "A"
},
{
"name": "Blog Guiapress",
"username": "@gafanhoto",
"user_id": 6,
"repository_id": 3,
"status": "A"
},
{
"name": "Blog Guiapress",
"username": "@JoĆ£ozinho",
"user_id": 5,
"repository_id": 3,
"status": "A"
},
{
"name": "Blog Guiapress",
"username": "Marcus_Oliveira",
"user_id": 2,
"repository_id": 3,
"status": "A"
},
{
"name": "Blog Guiapress",
"username": "@Mario_Soutinho",
"user_id": 4,
"repository_id": 3,
"status": "A"
},
{
"name": "Blog Guiapress",
"username": "Coutinho58",
"user_id": 1,
"repository_id": 3,
"status": "A"
}
],
"amount": 6
}
Este endpoint fica responsavel por retirar uma estrela de um repositorio
id:int
{
"success": true,
"message": "Retirado com sucesso"
}
Este endpoint fica responsavel por retornar o usuƔrio e sua foto
nenhum
{
"success": true,
"user": {
"id": 6,
"name": "Gustavo Guanabara",
"email": "gustavo_guanabara89@outlook.com",
"password": "$2a$10$PfUr1ooVm56KOpW6rjote.PRAdqMW4HNi/KvYalnFGtnm4zfY7QKO",
"status": "A",
"localization": "Ponta Negra - RN",
"username": "@gafanhoto",
"bio": "Esta bio Ć© apenas um teste",
"created_at": "2021-02-22T22:39:39.000Z",
"updated_at": "2021-02-22T22:39:39.000Z"
},
"avatar": {
"id": 6,
"originalname": "perfil.jpg",
"filename": "1614033965879_6.jpg",
"user_id": 6,
"created_at": "2021-02-22T22:46:05.000Z",
"updated_at": "2021-02-22T22:46:05.000Z"
}
}