GithubHelp home page GithubHelp logo

rest-api-challenge's Introduction

Fatec Challenge - Arquitetura Orientada a Serviços

Introdução

Com o intuito de demonstrar proficiência na matéria em questão, foi solicitada a criação de uma Web-API REST que tivesse os seguintes comportamentos:

  • Consumir ao menos duas Web-API's externas
  • Conectar em um banco de dados
  • Retornar os registros de uma tabela previamente criada no banco

Entrega

O projeto realizado é uma simples API REST que possui os seguintes endpoints:

ViaCEP API

  • GET /zip/{zip} Este endpoint fará a consulta do CEP inputado na URL ( {zip} ) e devolverá as informações sobre o mesmo.

    • Exemplo de requisição:
    curl localhost:8080/zip/05520-200
    • Exemplo de resposta:
    {
      "cep": "05520-200",
      "logradouro": "Avenida Professor Francisco Morato",
      "complemento": "de 4232 a 4886 - lado par",
      "bairro": "Vila Sônia",
      "localidade": "São Paulo",
      "uf": "SP",
      "ibge": "3550308",
      "gia": "1004",
      "ddd": "11",
      "siafi": "7107"
    }

Nationality API

  • GET /nationality/{name} Este endpoint fará a consulta do nome inputado na URL ( {name} ) e devolverá as informações sobre o mesmo.

    • Exemplo de requisição:
    curl localhost:8080/name/caio
    • Exemplo de resposta:
    {
      "count": 1468,
      "name": "caio",
      "country": [
        {
          "country_id": "BR",
          "probability": 0.24218256035817998
        },
        {
          "country_id": "IT",
          "probability": 0.21022431867452152
        },
        {
          "country_id": "AO",
          "probability": 0.19068948642360772
        },
        {
          "country_id": "PT",
          "probability": 0.14301595237998632
        },
        {
          "country_id": "JP",
          "probability": 0.024863386116953236
        }
      ]
    }

Users API

  • GET /users Este endpoint listará os usuários existentes na tabela de usuários.

    • Exemplo de requisição:
    curl localhost:8080/users
    • Exemplo de resposta:
    [
      {
        "id": 1,
        "name": "Gopher",
        "email": "[email protected]"
      },
      {
        "id": 2,
        "name": "Halie",
        "email": "[email protected]"
      },
      {
        "id": 3,
        "name": "Laurine",
        "email": "[email protected]"
      }
    ]
  • GET /users/{id} Este endpoint listará o usuário inputado na URL ( {id} ) e devolverá as informações sobre o mesmo.

    • Exemplo de requisição:
    curl localhost:8080/users/id
    • Exemplo de resposta:
    [
      {
        "id": 1,
        "name": "Gopher",
        "email": "[email protected]"
      }
    ]
  • POST /users Este endpoint criará o usuário e devolverá as informações criadas sobre o mesmo.

    • Exemplo de requisição:
    curl -X POST -H "Content-Type: application/json" -d '{"name":"Caio Salgado Nepomuceno", "email":"[email protected]"}' http://localhost:8080/users
    • Exemplo de resposta:
    {
      "id": 1,
      "name": "Caio Salgado Nepomuceno",
      "email": "[email protected]"
    }
  • PUT /users/{id} Este endpoint atualizará os dados do usuário inputado na URL ( {id} ) e devolverá as informações atualizadas sobre o mesmo.

    • Exemplo de requisição:
    curl -X PUT -H "Content-Type: application/json" -d '{"name":"Caio Salgado Nepomuceno", "email":"[email protected]"}' http://localhost:8080/users/1
    • Exemplo de resposta:
    {
      "id": 1,
      "name": "Caio Salgado Nepomuceno",
      "email": "[email protected]"
    }
  • DELETE /users/{id} Este endpoint removerá o usuário inputado na URL ( {id} ).

    • Exemplo de requisição:
    curl -X DELETE http://localhost:3000/users/1
    • Exemplo de resposta:
    200 OK

Ferramentas utilizadas

  • Golang 1.22
  • Postgres 16.2
  • Docker
  • Docker Compose
  • Env variables

rest-api-challenge's People

Contributors

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