Bem-vindas(os) ao meu primeiro projeto Fullstack!
Esse arquivo é a parte backend de um projeto fullstack no qual será reazliado uma agenda virtual. Nessa agenda virtual, é possível se cadastrar e adicionar seus contatos.
- O cliente se cadastra fornecendo seu nome, email e telefone, um username e senha (os dois ultimos utilizados no login).
- Após o cadastro e login, o cliente pode adicionar contatos à sua agenda.
- As informações dos contatos incluem nome, email, telefone e outras informações desejadas.
- É possível atualizar, ler e deletar os contatos adicionados.
- Linguagem: JavaScript/TypeScript
- Framework: Express (Node.js)
- Banco de Dados: PostgreSQL
- ORM: TypeORM
Para acessa essa API basta realizar a clonagem do repositório e em seguida instalar as dependencias necessárias:
git clone https://github.com/seu-usuario/nome-do-repositorio.git
cd nome-do-repositorio
yarn install
# ou
npm install
- Crie o arquivo .env:
Copie o conteúdo do .env.example e forneça os dados necessários para configurar o banco de dados PostgreSQL.
- Crie e execute uma migração:
npm run typeorm migration:generate ./src/migrations/InitialMigration -- -d ./src/data-source.ts
&
npm run typeorm migration:run -- -d ./src/data-source
A execução da aplicação é feito por meio do:
npm run dev
Método | Rota | Descrição |
---|---|---|
GET | /clients |
Obtém todos os clientes. |
GET | /clients/:id |
Obtém um cliente específico. |
POST | /clients |
Cria um novo cliente. |
PATCH | /clients/:id |
Atualiza as informações de um cliente. |
DELETE | /clients/:id |
Deleta um cliente. |
Método | Rota | Descrição |
---|---|---|
POST | /login |
Rota para realizar login. |
Método | Rota | Descrição |
---|---|---|
GET | /contacts |
Obtém todos os contatos. |
POST | /contacts |
Adiciona um novo contato. |
PATCH | /contacts/:id |
Atualiza as informações de um contato. |
DELETE | /contacts/:id |
Deleta um contato. |
POST - /clients
- Envio:
{
"full_name": "Lord Voldemort",
"username": "Voldemort",
"email": "voldemort@email.com",
"password": "voumatarharrypotter",
"phone_number": "666-666-666",
"admin": false (Não é obrigatório)
}
POST - /clients
- Retorno:
{
"id": "ea5bc2bc-6ac6-4c8f-bbdd-dab7115f2b86",
"full_name": "Lord Voldemort",
"username": "Voldemort",
"email": "voldemort@email.com",
"phone_number": "666-666-666",
"admin": false,
"created_at": "2023-11-25"
}
POST - /login
- Envio:
{
"username": "Voldemort",
"password": "voumatarharrypotter",
}
POST - /login
- Retorno:
{
{
"token": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsImlkVG9rZW4iOiIzMzM5YTkwYy0yODk0LTRlM2YtOTQwZi1hODM5OWZjYWI1MTMiLCJpYXQiOjE3MDEwOTM5MTIsImV4cCI6MTcwMTE4MDMxMiwic3ViIjoiMzMzOWE5MGMtMjg5NC00ZTNmLTk0MGYtYTgzOTlmY2FiNTEzIn0.DLEcZMRekbG8-pvsjrtxLItac9O8KByf6H5eyFhjrQ8",
"user": {
"id": "ea5bc2bc-6ac6-4c8f-bbdd-dab7115f2b86",
"full_name": "Lord Voldemort",
"username": "Voldemort",
"email": "voldemort@email.com",
"phone_number": "666-666-666",
"admin": false,
"created_at": "2023-11-25"
}
}
}
}
GET - /clients
- Retorno:
[
{
"id": "ea5bc2bc-6ac6-4c8f-bbdd-dab7115f2b86",
"full_name": "Lord Voldemort",
"username": "Voldemort",
"email": "voldemort@email.com",
"phone_number": "666-666-666",
"admin": false,
"created_at": "2023-11-25"
},
{
"id": "588d4a4b-84a6-4e2f-831d-676701cfdae6",
"full_name": "Albus Percival Wulfric Brian Dumbledore",
"username": "Dumbledore",
"email": "dumbledore@email.com",
"phone_number": "999-999-999",
"admin": true,
"created_at": "2023-11-25"
},
]
GET - /clients/:id
- Retorno:
{
"id": "588d4a4b-84a6-4e2f-831d-676701cfdae6",
"full_name": "Albus Percival Wulfric Brian Dumbledore",
"username": "Dumbledore",
"email": "dumbledore@email.com",
"phone_number": "999-999-999",
"admin": true,
"created_at": "2023-11-25"
}
PATCH - /clients/:id
- Envio:
{
"full_name": "Ronald Weasley",
"username": "rony",
"email": "ronynho@email.com",
"password": "NaoSigaAsAranhas",
"phone_number": "795403957",
"admin": false
}
PATCH - /clients/:id
- Retorno:
{
"id": "ea5bc2bc-6ac6-4c8f-bbdd-dab7115f2b86",
"full_name": "Ronald Weasley",
"username": "rony",
"email": "ronynho@email.com",
"password": "NaoSigaAsAranhas",
"phone_number": "795403957",
"admin": false,
"created_at": "2023-11-25"
}
DELETE - /clients/:id
- Retorno:
200 - OK
POST - /contact
- Envio:
{
"full_name": "Ariel",
"email": "ariel@email.com",
"phone_number": "6937594037",
"other_information": "Sereia que mora no fundo do mar e quer viver na terra"
}
POST - /contact
- Retorno:
{
"id": "3a38412b-b9a3-43f7-9a06-90874399438c",
"full_name": "Ariel",
"email": "ariel@email.com",
"phone_number": "6937594037",
"other_information": "Sereia que mora no fundo do mar e quer viver na terra"
"created_at": "2023-11-27"
}
GET - /contact
- Retorno:
[
{
"id": "3a38412b-b9a3-43f7-9a06-90874399438c",
"full_name": "Ariel",
"email": "ariel@email.com",
"phone_number": "6937594037",
"other_information": "Sereia que mora no fundo do mar e quer viver na terra"
"created_at": "2023-11-27"
},
{
"id": "4a584712b-b9a3-43f7-9a06-908743994c",
"full_name": "Ursula",
"email": "ursula@email.com",
"phone_number": "79356037",
"other_information": "Bruxa do mar, irmão do tritão"
"created_at": "2023-11-27"
}
]
PATCH - /contact/:id
- Envio:
{
"full_name": "Arielzim",
"email": "arielzim@email.com",
"phone_number": "8937594037",
"other_information": "Sereia mudou para o castelo"
},
PATCH - /contact/:id
- Retorno:
{
"id": "3a38412b-b9a3-43f7-9a06-90874399438c",
"full_name": "Arielzim",
"email": "arielzim@email.com",
"phone_number": "8937594037",
"other_information": "Sereia mudou para o castelo"
"created_at": "2023-11-27"
}
DELETE - /contact/:id
- Retorno:
200 - OK