Skip to content

Eugeniosales/clean-architecture-poc

Repository files navigation

Clean archicteture API POC

API Node.js que implementa um CRUD para gestão de funcionários.


Execução dos testes unitários com Docker

  1. 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/
  1. Construa a imagem docker e inicie os testes:
$ sudo docker build -t employee-api .

$ sudo docker run -p 3000:3000 -it employee-api

Utilização da API Employee

URL Base

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.

Listagem de funcionários

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

Criação de funcionário

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

Encontrar funcionário específico

Definição

GET /employee

Params

  • "id": string identificador único do funcionário

Resposta

  • 200 success. em caso de sucesso
  • 404 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."
}

Remoção de funcionário

Definição

DELETE /employee

Params

  • "id": string identificador único do funcionário

Resposta

  • 200 success. em caso de sucesso
  • 404 not found. em caso do usuário não existir
{
    "data": {},
    "message": "success."
}

Atualização de funcionário

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

Observações

Clean Architecture

Logo

A arquitetura da aplicação seguiu o Clean Architecture. De acordo a figura acima, os módulos possuem a seguinte correspondência:

Infra

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

Referências