Skip to content

ThiagoKS-7/Spring_CEP_API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project logo

Spring Boot CEP REST API

Status GitHub Issues GitHub Pull Requests License

API de consultas de CEP com Spring Boot,Swagger, JUnit5 e Cucumber

Frete das Regiões:



SUDESTE:

Sudeste

NORTE:

Norte

SUL:

Sul

NORDESTE:

Nordeste

CENTRO-OESTE:

Centro-oeste

Retorno Swagger:



{
  "swagger": "2.0",
  "info": {
      "description": "Documentação da API REST de consulta de CEP",
      "title": "SPRING CEP REST API",
      "contact": {
          "name": "Thiago Kasper de Souza",
          "email": "thiagokasper101@gmail.com"
      }
  },
  "host": "localhost:8080",
  "basePath": "/",
  "tags": [
      {
          "name": "consulta-cep-controller",
          "description": "Consulta Cep Controller"
      }
  ],
  "paths": {
      "/v1/consulta-endereco": {
          "post": {
              "tags": [
                  "consulta-cep-controller"
              ],
              "summary": "post",
              "operationId": "postUsingPOST",
              "consumes": [
                  "application/json"
              ],
              "produces": [
                  "*/*"
              ],
              "parameters": [
                  {
                      "in": "body",
                      "name": "consulta",
                      "description": "consulta",
                      "required": true,
                      "schema": {
                          "$ref": "#/definitions/Consulta"
                      }
                  }
              ],
              "responses": {
                  "200": {
                      "description": "OK",
                      "schema": {
                          "$ref": "#/definitions/ResponseEntity"
                      }
                  },
                  "201": {
                      "description": "Created"
                  },
                  "401": {
                      "description": "Unauthorized"
                  },
                  "403": {
                      "description": "Forbidden"
                  },
                  "404": {
                      "description": "Not Found"
                  }
              }
          }
      }
  },
  "definitions": {
      "Consulta": {
          "type": "object",
          "properties": {
              "cep": {
                  "type": "string"
              }
          },
          "title": "Consulta"
      },
      "ResponseEntity": {
          "type": "object",
          "properties": {
              "body": {
                  "type": "object"
              },
              "statusCode": {
                  "type": "string",
                  "enum": [
                      "ACCEPTED",
                      "ALREADY_REPORTED",
                      "BAD_GATEWAY",
                      "BAD_REQUEST",
                      "BANDWIDTH_LIMIT_EXCEEDED",
                      "CHECKPOINT",
                      "CONFLICT",
                      "CONTINUE",
                      "CREATED",
                      "DESTINATION_LOCKED",
                      "EXPECTATION_FAILED",
                      "FAILED_DEPENDENCY",
                      "FORBIDDEN",
                      "FOUND",
                      "GATEWAY_TIMEOUT",
                      "GONE",
                      "HTTP_VERSION_NOT_SUPPORTED",
                      "IM_USED",
                      "INSUFFICIENT_SPACE_ON_RESOURCE",
                      "INSUFFICIENT_STORAGE",
                      "INTERNAL_SERVER_ERROR",
                      "I_AM_A_TEAPOT",
                      "LENGTH_REQUIRED",
                      "LOCKED",
                      "LOOP_DETECTED",
                      "METHOD_FAILURE",
                      "METHOD_NOT_ALLOWED",
                      "MOVED_PERMANENTLY",
                      "MOVED_TEMPORARILY",
                      "MULTIPLE_CHOICES",
                      "MULTI_STATUS",
                      "NETWORK_AUTHENTICATION_REQUIRED",
                      "NON_AUTHORITATIVE_INFORMATION",
                      "NOT_ACCEPTABLE",
                      "NOT_EXTENDED",
                      "NOT_FOUND",
                      "NOT_IMPLEMENTED",
                      "NOT_MODIFIED",
                      "NO_CONTENT",
                      "OK",
                      "PARTIAL_CONTENT",
                      "PAYLOAD_TOO_LARGE",
                      "PAYMENT_REQUIRED",
                      "PERMANENT_REDIRECT",
                      "PRECONDITION_FAILED",
                      "PRECONDITION_REQUIRED",
                      "PROCESSING",
                      "PROXY_AUTHENTICATION_REQUIRED",
                      "REQUESTED_RANGE_NOT_SATISFIABLE",
                      "REQUEST_ENTITY_TOO_LARGE",
                      "REQUEST_HEADER_FIELDS_TOO_LARGE",
                      "REQUEST_TIMEOUT",
                      "REQUEST_URI_TOO_LONG",
                      "RESET_CONTENT",
                      "SEE_OTHER",
                      "SERVICE_UNAVAILABLE",
                      "SWITCHING_PROTOCOLS",
                      "TEMPORARY_REDIRECT",
                      "TOO_EARLY",
                      "TOO_MANY_REQUESTS",
                      "UNAUTHORIZED",
                      "UNAVAILABLE_FOR_LEGAL_REASONS",
                      "UNPROCESSABLE_ENTITY",
                      "UNSUPPORTED_MEDIA_TYPE",
                      "UPGRADE_REQUIRED",
                      "URI_TOO_LONG",
                      "USE_PROXY",
                      "VARIANT_ALSO_NEGOTIATES"
                  ]
              },
              "statusCodeValue": {
                  "type": "integer",
                  "format": "int32"
              }
          },
          "title": "ResponseEntity"
      }
  }
}

ROTAS:



curl --location --request GET 'http://localhost:8080/v2/api-docs'
 
 
 
curl --location --request POST 'localhost:8080/v1/consulta-endereco' \
--header 'Content-Type: application/json' \
--data-raw '{ 
   "cep":"72874-555" 
}'
 

📝 Table of Contents

🧐 About

Seu desafio é construir uma API REST de consulta de endereço e cálculo de frete para um determinado CEP. O contrato da API deve ser conforme especificado abaixo:

image

Para a busca do endereço do CEP, você deve consultar a API VIA CEP, conforme a documentação https://viacep.com.br/. O valor do frete é fixo de acordo com as regiões do Brasil: Sudeste (R$ 7,85), Centro-Oeste (R$ 12,50), Nordeste (R$ 15,98), Sul (R$ 17,30) e Norte (R$ 20,83). O CEP é obrigatório e pode ser passado com ou sem máscara na entrada e se o CEP não for encontrado uma mensagem informativa deve ser retornada para o cliente. Requisitos para o desenvolvimento: Java 11 Spring boot API REST Template Documentação Swagger Testes unitários JUnit5 Testes automatizados utilizando cucumber Você deve criar um repositório publico no GIT e colocar o projeto nele. Lembre-se de utilizar as regras de controle de versionamento!

🏁 Getting Started

Essas instruções vão lhe mostrar como ter uma copia do projeto rodando localmente na sua máquina.

Prerequisites

  • Java 11 instalado

Installing

sudo apt install maven

mvn clean install

mvn spring-boot:run

🔧 Running the tests

mvn clean test

⛏️ Built Using

✍️ Authors

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published