Esta é uma API RESTful que oferece operações CRUD para gerenciar usuários.
- Certifique-se de ter o Node.js instalado: Download Node.js
- Certifique-se de ter o Git instalado: Download Git
- Clone este repositório:
git clone https://github.com/acn3to/vagas.git
- Acesse o diretório do projeto:
cd seu-projeto
- Instale as dependências:
npm install
Antes de executar a API, você precisa configurar as seguintes variáveis de ambiente:
PORT
: Porta em que o servidor será executado.JWT_SECRET
: Chave JWT.
- Inicie o servidor:
npm start
- Acesse a API através de:
http://localhost:{PORT}
A API possui os seguintes endpoints:
-
POST /login
: Realiza a autenticação do usuário. -
GET /user
: Obtém informações do usuário autenticado. Requer autenticação com token. -
GET /users
: Obtém a lista de usuários. Requer autenticação com token. -
GET /user/readcount
: Obtém a contagem de leitura do usuário autenticado. Requer autenticação com token. -
POST /users
: Cria um novo usuário. Requer validação dos dados do usuário. -
PATCH /users
: Atualiza o usuário autenticado. Requer autenticação com token. -
DELETE /users
: Exclui o usuário autenticado. Requer autenticação com token.
Obs: Utilize a rota para POST /users antes de realizar o login.
POST /login HTTP/1.1
Content-Type: application/json
{
"name": "Neto",
"password": "12345"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxYWRiZDVhMi04YTI3LTQyOTQtYmI3MS01MWY3MDdkY2FiZjEiLCJpYXQiOjE2ODY2Mjg5NjMsImV4cCI6MTY4NjYzMjU2M30.SaPpamgTRzR7_KIXUUY0lAr-8ZJCB5bjNlNaiEWq04s"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Credenciais inválidas"
}
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"message": "Usuário não encontrado"
}
GET /user?name=Neto HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "1adbd5a2-8a27-4294-bb71-51f707dcabf1",
"name": "Neto",
"job": "Developer",
"isAdm": false,
"readCount": 1
}
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"message": "Usuário não encontrado"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação não fornecido"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação precisa ser do tipo Bearer Token"
}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"message": "Token de autenticação inválido"
}
GET /users HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": "1adbd5a2-8a27-4294-bb71-51f707dcabf1",
"name": "Neto",
"job": "Developer",
"isAdm": false
},
{
"id": "2c71c3e9-9d16-4fb7-b0bc-fd2ab20e9d8d",
"name": "Alice",
"job": "Designer",
"isAdm": true
},
...
]
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação não fornecido"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação do tipo precisa ser do tipo Bearer Token"
}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"message": "Token de autenticação inválido"
}
GET /user/readcount?name=Neto HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
Content-Type: application/json
{
"message": "O usuário Neto foi lido 3 vez(es)."
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação não fornecido"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação precisa ser do tipo Bearer Token"
}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"message": "Token de autenticação inválido"
}
POST /users HTTP/1.1
Content-Type: application/json
{
"name": "John Doe",
"job": "Engineer",
"password": "123456",
"isAdm": false
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "2f7fcbda-7f53-4e0b-8964-edd91cb7a587",
"name": "Costa",
"job": "Dev",
"password": "$2b$10$IFdOsvSxhhi1iCCDVR6qrOiwHGddt6ZQOccBeVYwMLofHGdUocRNi",
"isAdm": true
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"message": "Dados incompletos do usuário"
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"message": "Nome do usuário inválido"
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"message": "Nome de usuário já existe"
}
PATCH /users?id=1a2b3c4d HTTP/1.1
Content-Type: application/json
Authorization: Bearer {token}
{
"name": "John Doe",
"job": "Senior Developer"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "1a2b3c4d",
"name": "John Doe",
"job": "Senior Developer",
"isAdm": false
}
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"message": "Usuário não encontrado"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação não fornecido"
}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"message": "Acesso negado"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação precisa ser do tipo Bearer Token"
}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"message": "Token de autenticação inválido"
}
DELETE /users?name=Neto HTTP/1.1
Content-Type: application/json
Authorization: Bearer {token}
HTTP/1.1 200 OK
Content-Type: application/json
{
"message": "Usuário removido com sucesso"
}
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"message": "Usuário não encontrado"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação não fornecido"
}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"message": "Acesso negado"
}
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"message": "Token de autenticação precisa ser do tipo Bearer Token"
}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"message": "Token de autenticação inválido"
}
- Faça o fork do projeto
- Crie uma nova branch:
git checkout -b feature/nova-feature
- Faça as alterações desejadas
- Faça o commit das suas alterações:
git commit -m 'Adicionar nova feature'
- Faça o push para a branch:
git push origin feature/nova-feature
- Abra um Pull Request