API Node.js que implementa um CRUD para gestão de funcionários.
- Efetue o download do repositório e e entre na raiz do diretório:
$ git clone https://github.com/Eugeniosales/clean-archicteture-API-POC.git
$ cd clean-archicteture-API-POC/
- Construa a imagem docker e inicie os testes:
$ sudo docker build -t employee-api .
$ sudo docker run -p 3000:3000 -it employee-api
https://9dn6csmncl.execute-api.us-east-1.amazonaws.com/dev
Todas as respostas tem o formaato:
{
"data": "Conteúdo da resposta",
"message": "Descrição da resposta"
}
As respostas subsequentes irão definir em detalhes o valor do campo data
.
Definição
GET /employees
Resposta
200 success.
em caso de sucesso
{
"data": [
{
"id": "22590ea0-57bd-11ec-85c7-3751d5c35a66",
"age": 25,
"name": "Gabriel",
"role": "Analista de marketing"
},
{
"id": "6cb6d680-57bd-11ec-a3ff-b51f63f6a451",
"age": 24,
"name": "Lennon",
"role": "Analista de sistemas"
}
],
"message": "success."
}
Definição
POST /employee
Headers
Content-Type: application/json
Body
"age":int
idade do funcionário"name":string
nome do funcionário"role":string
cargo do funcionário
Resposta
200 success.
em caso de sucesso
{
"data": {
"id": "fdb73100-57d3-11ec-8974-a1d547655ef7",
"age": 40,
"name": "John Doe",
"role": "Engineer"
},
"message": "success."
}
Definição
GET /employee
Params
"id": string
identificador único do funcionário
Resposta
200 success.
em caso de sucesso404 not found.
em caso do usuário não existir
{
"data": {
"id": "458a72e0-57d3-11ec-b3ea-03d123e4dbe8",
"age": 40,
"name": "John Doe",
"role": "Engineer"
},
"message": "success."
}
Definição
DELETE /employee
Params
"id": string
identificador único do funcionário
Resposta
200 success.
em caso de sucesso404 not found.
em caso do usuário não existir
{
"data": {},
"message": "success."
}
Definição
PUT /employee
Params
"id":string
identificador único do funcionário
Headers
Content-Type: application/json
Body
"age":int
idade do funcionário"name":string
nome do funcionário"role":string
cargo do funcionário
Resposta
200 success.
em caso de sucesso
{
"data": {
"id": "458a72e0-57d3-11ec-b3ea-03d123e4dbe8",
"age": 42,
"name": "John Doe",
"role": "Engineer"
},
"message": "success."
}
A arquitetura da aplicação seguiu o Clean Architecture. De acordo a figura acima, os módulos possuem a seguinte correspondência:
- domain: Enterprise Business Rules
- application: Application Business Rules
- interfaces: Interface adapters
- infrastructure: Framework & Drivers
- A API foi provisionada em um infraestura serverless com o Lambda e o DynamoDB (NoSQL) na AWS.
- Para o provionamento da infraestrura foi utilizado o Serverless Framework.