/arquitetura-hexagonal

Refactoring a Spring Boot API for hexagonal architecture

Primary LanguageJava

Attornatus Challenge

Olá, este projeto foi desenvolvido para o teste técnico da Attornatus.

Sumário

Requisitos:

  • Utilizar Java, Spring Boot
  • Criação da API
  • Rota para criar uma pessoa
  • Rota para Editar uma pessoa
  • Rota para Consultar uma pessoa
  • Rota para Listar pessoas
  • Rota para Criar endereço para pessoa
  • Rota para Listar endereços da pessoa
  • Rota para Poder informar qual endereço é o principal da pessoa
  • Testes
  • Todas as respostas da API devem ser JSON
  • Banco de dados H2

Opcional:

Rodando com Dockerfile

Na raiz do projeto digite o comando:

docker run -p 8080:8080 luizportel4/attornatus-api:2.0.0

Rotas

Rota para criar uma pessoa [POST (domain/api/person)]

Corpo da Requisição:

{
  "name": "Luiz",
  "birthday": "2003-01-18",
  "addresses": [
    {
      "publicSpace":"Rua da Laranjeiras",
      "zipCode": "23321-982",
      "number": 2732,
      "city": "Mangueira",
      "mainAddress": true
    },
    {
      "publicSpace":"Rua Cupuaçu",
      "zipCode": "12345-678",
      "number": 280,
      "city": "Açaí"
    }
    ]
}

Rota para Editar uma pessoa [PUT (domain/api/person/{id})]

Corpo da Requisição:

{
  "name":"Luizinho",
  "birthday":"2003-01-16",
  "addresses": [
    {
      "publicSpace":"Rua dos Anjos",
      "zipCode": "12493-502",
      "number": 2732,
      "city": "Alameda",
      "mainAddress": true
    }
    ]
}

Rota para Consultar uma pessoa [GET (domain/api/person/{id})]

Corpo da Requisição:

Rota para Listar pessoas [GET (domain/api/people)]

Corpo da Requisição:

[EXTRA] Rota para Poder informar qual endereço é o principal da pessoa [GET (domain/api/person{id})]

Corpo da Requisição:

Rota para Criar endereço para pessoa [POST (domain/api/address/{id})]

Corpo da Requisição:

 {
      "publicSpace":"Rua das Goiabas",
      "zipCode": "11111-000",
      "number": 2222,
      "city": "Jabuticaba",
      "mainAddress": true
    }

Rota para Listar endereços da pessoa [GET (domain/api/addresses/{id})]

Corpo da Requisição:

Rota para Poder informar qual endereço é o principal da pessoa [GET (domain/api/person)]

Corpo da Requisição:

ResourceNotFound

Caso seja pesquisado por um id de uma pessoa que não esteja no sistema, será retornado o seguinte corpo:

Corpo do Retorno:

{
  "title": "Resource not found",
  "status": 404,
  "detail": "Person not found with id 4",
  "timestamp": 1673827042554,
  "developerMessage": "br.com.attornatuschallenge.error.ResourceNotFoundException"
}