Code Monkey home page Code Monkey logo

customer-server-auth's Introduction

Customer Server API + JWT

Api Rest para cadastro e consulta de clientes.

Requitos

  • Java 8
  • Spring Boot
  • PostgresSQL
  • Docker

Funcionamento

A API deve cadastrar clientes e realizar operações básicas de um CRUD.

Operações suportadas

  • Cadastrar Usuário
  • Realizar Login
  • Cadastrar cliente
  • Consultar cliente pelo Id
  • Remover cliente
  • Editar cliente

Endpoints

Auth

  • POST /register

    • Realizamos um cadastro de usuário para podermos acessar o sistema, devemos informa o nome, email e senha conforme exemplo.

    • A resposta deve conter os seguintes códigos:

      • 200: em caso de sucesso
      • 500: em caso de falha

_Exemplo: uri/register

request:

{
	"name": "Teste",
	"email" : "[email protected]",
	"password" : "1234"	
}

response:

{
	"name": "Teste",
	"email" : "[email protected]",
	"password" : "1234"	
}
  • POST /authenticate

    • Informamos um email e senha previamente cadastrados para recebermos um token.

    • Retorna um jwt-token para ser usado nas demais requisições realizadas.

    • A resposta deve conter os seguintes códigos:

      • 200: em caso de sucesso
      • 401: em caso de falha

Exemplo: uri/authenticate

request:

{
	"username" : "[email protected]",
	"password" : "1234"
}

response:

{
  "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzYXVsb2Zhcmlhc2xpdmVAZ21haWwuY29tIiwiZXhwIjoxNjA1MzE1MDY1LCJpYXQiOjE2MDUyOTcwNjV9.h7NWHegURC0zIfIp9cZIMeSTtSQSQk0RWu0_AmnK1f7TEzSqdtrc5uGxsoGGxBcbBNig81F08VZ6_KkMgoFXUQ"
}

Customers

  • GET / customers

    • Retorna todos os clientes cadastrados na base de dados.

    • A resposta deve conter os seguintes códigos:

      • 200: em caso de sucesso
      • 404: se o registro não for localizado

Exemplo: uri/customers

response:

[
  {
    "cpf": "1111111111",
    "rg": "22222",
    "name": "Severino Saulo",
    "customerAddress": {
      "id": 3,
      "street": "Rua Sete de Setembro",
      "number": "1",
      "city": "Janaúba",
      "district": "Boa Vista",
      "complement": null,
      "state": "MG",
      "zipCode": "39444074",
      "country": "Brasil"
    },
    "contacts": [
      {
        "id": 5,
        "type": "telefone",
        "number": "8122222"
      },
      {
        "id": 6,
        "type": "celular",
        "number": "233123123"
      }
    ]
  },
  {
    "cpf": "1113232321",
    "rg": "222",
    "name": "teste",
    "customerAddress": {
      "id": 4,
      "street": "Rua Sete de Setembro",
      "number": "111",
      "city": "teste",
      "district": "Boa Vista",
      "complement": null,
      "state": "MG",
      "zipCode": "1111111",
      "country": "Janaúba"
    },
    "contacts": []
  }
]
  • GET / customers/{id}

    • Retorna um cliente pelo ID informado

    • A resposta deve conter os seguintes códigos:

      • 200: em caso de sucesso
      • 404: se o registro não for localizado

Exemplo: uri/cutomers/1111111111

response:

{
  "cpf": "1111111111",
  "rg": "22222",
  "name": "Severino Saulo",
  "customerAddress": {
    "id": 3,
    "street": "Rua Sete de Setembro",
    "number": "1",
    "city": "Janaúba",
    "district": "Boa Vista",
    "complement": null,
    "state": "MG",
    "zipCode": "39444074",
    "country": "Brasil"
  },
  "contacts": [
    {
      "id": 5,
      "type": "telefone",
      "number": "8122222"
    },
    {
      "id": 6,
      "type": "celular",
      "number": "233123123"
    }
  ]
}
  • POST / customers

    • Cria um novo cliente

    • A resposta deve conter os seguintes códigos:

      • 201: em caso de sucesso

Exemplo: uri/cutomers

request:_

{
  "cpf": "1111111111",
  "rg": "22222",
  "name": "Severino Saulo",
  "customerAddress": {
    "street": "Rua Sete de Setembro",
    "number": "1",
    "city": "Janaúba",
    "district": "Boa Vista",
    "complement": null,
    "state": "MG",
    "zipCode": "39444074",
    "country": "Brasil"
  },
  "contacts": [
    {
      "type": "telefone",
      "number": "8122222"
    },
    {
      "type": "celular",
      "number": "233123123"
    }
  ]
}

response:

{
  "cpf": "1111111111",
  "rg": "22222",
  "name": "Severino Saulo",
  "customerAddress": {
    "id": 3,
    "street": "Rua Sete de Setembro",
    "number": "1",
    "city": "Janaúba",
    "district": "Boa Vista",
    "complement": null,
    "state": "MG",
    "zipCode": "39444074",
    "country": "Brasil"
  },
  "contacts": [
    {
      "id": 5,
      "type": "telefone",
      "number": "8122222"
    },
    {
      "id": 6,
      "type": "celular",
      "number": "233123123"
    }
  ]
}
  • PUT / customers/{id}

    • Atualiza um cliente

    • A resposta deve conter os seguintes códigos:

      • 201: em caso de sucesso
      • 404: se o registro não for localizado

Exemplo: uri/cutomers/1111111111

  • DELETE / customers/{id}
    • Remove um cliente

    • A resposta deve conter os seguintes códigos:

      • 204: em caso de sucesso
      • 404: se o registro não for localizado

Exemplo: uri/cutomers/1111111111

Testes

Execução

Por padrão, a API está disponível em [http: // localhost: 8080 /] (http: // localhost: 8080 /)

Para executar a API, podemos usar os seguintes métodos:

cd target && java -jar customer-server-0.0.1-SNAPSHOT.jar

ou com o seguinte comando

mvn spring-boot: run

Docker

A API está configurada para ser usada com o Docker, para tal devemos seguir os seguintes passos:

  • Primeiro devemos construir o executável de nossa aplicação com o seguinte comando: mvn clean package

  • Devemos rodar o seguinte comando: docker-compose up --build

Se tudo ocorrer bem podemos acessar os recursos da API normalmente como mostrado no tópico Endpoints.

customer-server-auth's People

Contributors

saulofarias avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.