Este projeto é uma API RESTful desenvolvida em Node.js utilizando o framework Express. A API oferece operações de cadastro (sign up), autenticação (sign in), recuperação de informações do usuário e busca de usuário autenticado. Utiliza JSON como formato de comunicação, JWT para autenticação e MongoDB Atlas como banco de dados na nuvem e Mongoose utilizado para mapeamento de dados.
- Desenvolvimento de uma API RESTful em Node.js com Express
- Implementação de operações de cadastro, autenticação, recuperação de informações e busca de usuário autenticado
- Utilização de JSON como formato de comunicação
- Autenticação com JWT (JSON Web Tokens)
- Criptografia hash na senha e token para maior segurança
- Banco de dados MongoDB Atlas na nuvem
- Node.js (LTS)
- Express 4.17.1
- JWT para autenticação
- Mongoose (Object Data Modeling para MongoDB)
- MongoDB Atlas para armazenamento de dados
- Render para hospedagem
- Insomnia para testes de API
-
Clone este repositório (Opcional: Se você estiver interessado em examinar o código-fonte ou contribuir para o projeto).
-
Configure seu ambiente de desenvolvimento com as tecnologias mencionadas.
-
Execute a aplicação Node.js. Utilize o seguinte comando no terminal:
npm start # ou node src/server.js
-
Utilize os seguintes endpoints para realizar operações na API:
- Cadastro de Usuário:
locahost:
[POST] https://localhost:3001/auth/cadastro
ou
[POST] https://api-escribo-x2y3.onrender.com/auth/cadastro
- Autenticação de Usuário:
locahost:
[POST] https://localhost:3001/auth/login
ou
[POST] https://api-escribo-x2y3.onrender.com/auth/login
-Nota: A busca de usuários autenticados requer autenticação via Bearer Token. Certifique-se de incluir na sua requisição: Bearer TOKEN.
- Busca de Usuários Autenticados:
locahost:
[GET] https://localhost:3001/admin/users
ou
[GET] https://api-escribo-x2y3.onrender.com/admin/users
- Atualização de Usuário:
locahost:
[PUT] https://localhost:3001/auth/users/:id
ou
[PUT] https://api-escribo-x2y3.onrender.com/auth/users/:id
Certifique-se de que as tecnologias necessárias estejam configuradas no seu ambiente antes de utilizar os endpoints. Você pode usar ferramentas como o INSOMNIA
, cURL
ou POSTMAN
para realizar as operações na API.
Você pode utilizar o cURL para testar os endpoints diretamente do terminal ou linha de comando. Abaixo estão alguns exemplos básicos:
curl -X POST -H "Content-Type: application/json" -d '{"nome":"SeuNome", "email":"seuemail@example.com", "senha":"suasenha", "telefone":{"numero":"seunumero", "ddd":"seuddd"}}' https://api-escribo-x2y3.onrender.com/auth/cadastro
curl -X POST -H "Content-Type: application/json" -d '{"email":"seuemail@example.com", "senha":"suasenha"}' https://api-escribo-x2y3.onrender.com/auth/login
curl -X GET -H "Authorization: Bearer TOKEN_AQUI" https://api-escribo-x2y3.onrender.com/admin/users
curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN_AQUI" -d '{"nome":"NovoNome", "email":"novoemail@example.com", "telefone":{"numero":"novonumero", "ddd":"novoddd"}}' https://api-escribo-x2y3.onrender.com/auth/users/seuid
A seguir estão os endpoints disponíveis do projeto hospedado:
-
- URL: https://api-escribo-x2y3.onrender.com/auth/cadastro
- Método: POST
- Input:
- Campos necessários para cadastro (ex: nome, email, senha, telefone{numero,ddd})
{
"nome": "string",
"email": "string",
"senha": "senha",
"telefone": {
"numero": "123456789",
"ddd": "11"
}
}
- Output (sucesso):
- Retorno com informações do usuário cadastrado
{
"id": "GUID/ID",
"data_criacao": "data",
"data_atualizacao": "data",
"ultimo_login": "data",
"token": "GUID/JWT"
}
-
Erro:
- E-mail já cadastrado:
{ "mensagem": "E-mail já existente" }
- E-mail já cadastrado:
-
- URL: https://api-escribo-x2y3.onrender.com/auth/login
- Método: POST
- Input:
- E-mail e senha do usuário
{
"email": "string",
"senha": "senha"
}
- Output (sucesso):
- Retorno com token de autenticação
{
"id": "GUID/ID",
"data_criacao": "data",
"data_atualizacao": "data",
"ultimo_login": "data_atualizada",
"token": "GUID/JWT"
}
-
Erros:
- E-mail não cadastrado ou senha incorreta:
{ "mensagem": "Usuário e/ou senha inválidos" }
- Senha incorreta: Status 401 com
{ "mensagem": "Usuário e/ou senha inválidos" }
- E-mail não cadastrado ou senha incorreta:
-
- URL: https://api-escribo-x2y3.onrender.com/admin/users
- Método: GET
- Requisição: Header Authentication com valor "Bearer {token}"
- Output (sucesso):
- Retorno com informações dos usuários
{
"id": "6563873da187f9f7405a7026",
"nome": "string",
"email": "string",
"iat": 1701021502,
"exp": 1701023302
}
-
Erros:
- Token inválido:
{ "mensagem": "Não autorizado" }
- Token expirado (mais de 30 minutos):
{ "mensagem": "Sessão inválida" }
- Token inválido:
-
- URL: https://api-escribo-x2y3.onrender.com/auth/users/:id
- Método: PUT
- URL Params:
:id
- ID do usuário a ser atualizado
- Input:
- Campos a serem atualizados (ex: nome, email, telefone) em formato JSON
{
"nome": "Novo Nome",
"email": "novoemail@example.com",
"telefone": {
"numero": "987654321",
"ddd": "11"
}
}
- Output (sucesso):
- Retorno com informações atualizadas do usuário
{
"mensagem": "Usuário atualizado com sucesso",
"id": "ID",
"data_criacao": "Data",
"data_atualizacao": "Data_atualizada",
"ultimo_login": "Data",
"token": "Token"
}
- Erros:
- Email já Cadastrado:
{ "mensagem": "E-mail já existente" }
- Email já Cadastrado:
A estrutura deste projeto segue a organização abaixo:
src
: Contém o código-fonte Node.js da aplicação.config
: Armazena configurações específicas da aplicação.controllers
: Responsável por conter os controladores da lógica de negócios.database
: Mantém os arquivos relacionados ao banco de dados, como conexões e configurações.middlewares
: Contém middlewares utilizados na aplicação.models
: Guarda os modelos de dados utilizados na aplicação.server.js
: Ponto de entrada da aplicação, contendo as configurações e definição das rotas da API.
O projeto utiliza o npm (Node Package Manager) para:
- Gerenciamento de Dependências: Todas as dependências do projeto são definidas no arquivo
package.json
e podem ser instaladas usando o comando:npm install
- ESLint: O projeto utiliza o ESLint para manter a consistência no estilo do código. Os padrões de estilo são definidos no arquivo
.eslintrc.json
e a verificação pode ser feita com o comando:npm run lint