Skip to content

šŸ”„A aplicaĆ§Ć£o Ć© uma Api que armazenara informaƧƵes a respeito dos usuĆ”rios do github

Notifications You must be signed in to change notification settings

Gabriel52/Nodejs-ApiRest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Ā 

History

5 Commits
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 

Repository files navigation

Node JS ApiRest

šŸ’”ProtĆ³tipo da aplicaĆ§Ć£o

A Api irĆ” fornecer dados para o protĆ³tipo disponibilizado no Link

āœ… Requisitos nĆ£o funcionais

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. }

āœ… Requisitos funcionais

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.

šŸ”§ PrĆ©-requisitos

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/

šŸ›  Tecnologias

Node.js (Back-End);

Sequelize;

JsonWebToken

Eslint

MySQL (Banco de Dados);

šŸ“– LicenƧa

LanƧado em 2021 šŸ“–


Feito por Gabriel Brune šŸš€. Este projeto estĆ” sobre a licenƧa do MIT


Dar uma ā­ se este projeto te ajudou

šŸ› Problemas

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 !

DocumentaĆ§Ć£o - Endpoints

Login

POST /authentication

Este endpoint fica responsavel pela autenticaĆ§Ć£o do usuĆ”rio, retornando seu respectivo token

Params

name, email

Response

  {
    "success": true,
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NiwiZW1haWwiOiJndXN0YXZvX2d1YW5hYmFy2432324324YTg5QG91dGxvb2suY29tIiwiaWF0IjoxNjE0MDMzNjM5LCJleHAiOjE2MTQxMjAwMzl9.6X4t0WotBkei7BlXYgJM01tTv1xYdR-1-sXjEboZu9U",
    "user": {
      "email": "gustavo_guanabara89@outlook.com",
      "id": 6
    }
  }

GET /authentication

Este endpoint retorna a data e em os usuƔrios se logaram

Params

nenhum

Response

{
  "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"
      }
    }
  ]
}

User

POST /user

Este endpoint fica responsavel pela criaĆ§Ć£o de usuĆ”rios

Params

name, email, password, username, localization, bio

Response

  {
   {
    "success": true,
    "message": "Beatriz Rodrigues criado com sucesso"
    }
  }

GET /user

Este endpoint retorna todos os usuƔrios

Params

nenhum

Response

  {
   "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"
    },
  }

DELETE /user/:id

Este endpoint fica responsavel por desativar usuƔrios

Params

nenhum

Response

  {
   {
    "success": true,
    "message": "Beatriz Rodrigues criado com sucesso"
    }
  }

PUT /user/:id

Este endpoint fica responsavel por atualizar usuƔrio

Params

name, username, localization, bio

Response

  {
   {
    "success": true,
    "message": "Atualizado com sucesso"
    }
  }

Photo

POST /photo

Este endpoint fica responsavel por criar uma foto e a vincular com um usuƔrio

Params

file, user_id

Response

 {
  "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
  }
}

Follow

POST /follower

Este endpoint fica responsavel por seguir um usuƔrio

Params

following

Response

{
  "success": true,
  "message": "VocĆŖ estĆ” seguindo Gustavo Guanabara"
}

GET /follower

Este endpoint fica responsavel por mostar quem vocĆŖ estĆ” seguindo

Params

nenhum

Response

{
  "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
}

GET /following

Este endpoint fica responsavel por mostar quem estĆ” te seguindo

Params

nenhum

Response

{
  "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
}

Repository

POST /repository

Este endpoint fica responsavel por criar um repositorio

Params

name:String, description: String, public: Boolean

Response

{
  "success": true,
  "message": "CRUD em C# criado com sucesso"
}

GET /repository

Este endpoint retorna todos os repositorios daquele usuƔrio

Params

nenhum

Response

{
 "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
}

DELETE /repository/:id

Este endpoint fica responsavel por deletar um repositorio

Params

id:int

Response

{
  "success": true,
  "message": "Excluido com sucesso"
}

Star

POST /star

Este endpoint fica responsavel por dar estrela em um repositorio

Params

repository_id: Integer

Response

{
  "success": true,
  "message": "VocĆŖ acabou de dar estrela no repositorio Blog Guiapress"
}

GET /star

Este endpoint fica responsavel por mostar as estrela de um repositorio

Params

repository: Integer

Response

{
  "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
}

DELETE /star/:id

Este endpoint fica responsavel por retirar uma estrela de um repositorio

Params

id:int

Response

{
  "success": true,
  "message": "Retirado com sucesso"
}

Home

GET /

Este endpoint fica responsavel por retornar o usuƔrio e sua foto

Params

nenhum

Response

{
  "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"
  }
}

About

šŸ”„A aplicaĆ§Ć£o Ć© uma Api que armazenara informaƧƵes a respeito dos usuĆ”rios do github

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published