/api-java-tt

API Simples , para o cadastro de pessoas .

Primary LanguageJava

API Java - Cadastro de Pessoas 📋 👱‍♀️

Prévia

🚧 API Java 🚀 Em construção... 🚧

SobreTecnologiasComo executar: Como UsarTestes

🚀📋 Sobre:

Essa foi API desenvolvida por mim ,Jeferson Gomes na etapa técnica do processo seletivo da empresa Attornatus Procuradoria Digital .
Consistia em contruir uma API simples, para o cadastro de pessoas e também, escrever testes para
suas funcionalidades.

🛠️ Construído com:

  • Java
  • Spring Boot
  • JPA
  • JUnit 5
  • Mockito

📖 Como Executar:

✔️ Rodando o Back End (servidor)

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: [Git](https://git-scm.com), [Java-JDK](https://www.oracle.com/java/technologies/downloads/). Além disto é bom ter um editor para trabalhar com o código como o [Eclipse](https://www.eclipse.org/downloads/)

🎲 Rodando o Back End (servidor)


# Clone este repositório.
$ git clone git@github.com:jefersongjr/api-java-tt.git

# Acesse a pasta do projeto
$ navegue ate a pasta root do projeto

#os dois próximos passos devem ser executados no diretório que tem o arquivo pom.xml

# Instale as dependências
$ mvn install

# Execute a aplicação
$ mvn spring-boot:run

# O servidor iniciará na porta:8080
# O Banco de dados h2 iniciará na porta:8080/h2-console

💻 Usando a Aplicação:

📊 Banco de Dados

  • O banco de dados pode ser acessado na porta:8080/h2-console
  • Os dados de acesso estão no arquivo ../src/main/resource/application.yml
  • O Banco de dados tem duas entidades: Pessoa e Endereço. Ambas iniciam vazias.

db

Cadastrando uma Pessoa:

🏗️ Método Post: "/pessoas"
  • Como primeiro passo deve-se criar uma pessoa.
  • A API não permitirá criar um endereço sem nenhuma pessoa criada.
  • Ao criar uma pessoa o endereço receberá o valor null
  • Os campos nome e dataDeNascimento são Obrigatórios
  • O campo nome é do tipo string e não pode ter menos de 3 caracteres
  • o campo dataDeNascimento deve ser uma data válida.

Ao enviar uma requisição bem sucedida nesse formato,

{
  "nome": "Daniel",
  "dataDeNascimento": "20/01/1991",
  "endereco": 1
}

a Aplicação devolverá uma resposta assim:

responsePost

Cadastrando um Endereço:

🏗️ Método Post: "/endereco"
  • Com a pessoa criada , um endereço pode ser criado.
  • O único campo que não é obrigátorio é o campo número mas ele não pode ser negativo.
  • O campo pessoaId deve ser o id de uma pessoa já cadastrada
  • O campo CEP deve ser um CEP válido.
  • O campo Cidade é do tipo string e não pode ter menos de 5 caracteres
  • O campo Logradouro é do tipo string e não pode ter menos de 4 caracteres
  • Uma pessoa cadastrada pode ter vários endereços

Ao enviar uma requisição bem sucedida nesse formato,

{
    "logradouro": "Rua A",
    "CEP": "22222-333",
    "numero": 1,
    "cidade": "Rio de Janeiro",
    "pessoaId": 1
}

a Aplicação devolverá uma resposta assim:

responsePost

Atualizando uma Pessoa:

🏗️ Método Put: "/pessoas"
  • Com a pessoa e o endereço cadastrado, deve ser escolhido o endereço principal da pessoa.
  • Todos os campos deverão ser preenchidos.
  • As mesmas validações de criar uma pessoa serão feitas.
  • O Campo endereco deverá ser um inteiro.
  • Se o endereço não estiver cadastrado o valor será null.

Ao enviar uma requisição bem sucedida nesse formato,

{
  "id": 1
  "nome": "Daniel",
  "dataDeNascimento": "20/01/1991",
  "endereco": 1
}

a Aplicação devolverá uma resposta assim:

responseput

Listando todas Pessoas cadastradas:

📋 Método Get: "/pessoas"
  • Ao fazer uma requisição get para "/pessoas"

a Aplicação devolverá uma resposta assim:

responseput

Listando uma Pessoa pelo seu Id:

📋 Método Get: "/pessoas/{id}"
  • Ao fazer uma requisição get para "/pessoas/1"

a Aplicação devolverá uma resposta assim:

responseput

Listando uma Pessoa por parte do seu Nome:

📋 Método Get: "/pessoas/nome/{parteDonNome}"
  • Ao fazer uma requisição get para "/pessoas/nome/jo"

a Aplicação devolverá uma resposta assim:

responseput

Listando todos Endereços de uma Pessoa:

📋 Método Get: "/endereco/pessoa/{id}"
  • Ao fazer uma requisição get para "/pessoas/pessoa/1"

a Aplicação devolverá uma resposta assim:

responsegetPessoaId

🧪 Testes

  • Os testes podem ser rodados utilizando o comando $ mvn test

Cobertura dos Testes

responseput