GithubHelp home page GithubHelp logo

arieldossantos / growth Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jeffotoni/growth

0.0 1.0 0.0 2.98 MB

Simples exemplo de CRUD para armazenar em memoria os dados vindo do JSON.

License: MIT License

Dockerfile 6.52% Go 47.39% Python 8.24% Rust 2.55% TypeScript 8.53% Kotlin 22.21% JavaScript 4.56%

growth's Introduction

API Growth 💙 🐿️ 🐍 🦀

Este repositório foi criado para colocarmos projetos em diversas linguagens com intúito totalmente didático para colaborar com a comunidade e desenvolvedores como resolver o problema proposto com objetivo de visualizarmos as vantagens e desvantagens de cada uma para resolver o problema.

O escopo do projeto é criar uma API rEST um CRUD e persistir em memória e colocar em uma imagem docker e o tamanho desta imagem não poderá ultrapassar 6Mb.

Todo repo foi organizado por linguagens de programação, fique a vontade em colaborar enviando um pull request para nós, logo abaixo vamos deixar na documentação como fazer PR.

O que iremos enviar para o [POST] será um json de 3Mb com mais de 40k de linhas e o corpo do Json está logo abaixo:

[
   {
      "Country":"BRZ",
      "Indicator":"NGDP_R",
      "Value":183.26,
      "Year":2002
   },
   {
      "Country":"AFG",
      "Indicator":"NGDP_R",
      "Value":198.736,
      "Year":2003
   }
]

O arquivo 3mb-growth_json.json que encontra-se no raiz deste repositório.

Pull Request

Você poderá organizar sua pasta como os exemplos abaixo:

grow.go/
└── jeffotoni
    ├── grow.fiber
    │   └── README.md
    └── grow.standard.libray
        ├── Dockerfile
        ├── go.mod
        ├── main.go
        ├── main_test.go
        └── README.md

Poderá organizar seu projeto escolhendo a linguagem que irá implementar e logo depois seu user do github e dentro de seu diretório poderá criar e organizar suas contribuições.

Confira mais exemplos:

grow.python/
└── cassiobotaro
    ├── Dockerfile
    ├── main.py
    ├── README.md
    └── requirements.txt
grow.rust
└── marioidival
    └── actix
        ├── Cargo.toml
        └── src
            └── main.rs

Os endpoints que devem ser implementados estão listados logo abaixo, todos vamos seguir o mesmo padrão:

POST

Criando nossa base de dados na memória, esta requisição é assícrona irá ficar rodando em background.

$ curl -i -XPOST -H "Content-Type:application/json" \
localhost:8080/api/v1/growth -d @3mb-growth_json.json
{"msg":"In progress"}

GET

Com este endpoint conseguimos visualizar o status de como está o processamento que enviamos no [POST]

$ curl -i -XGET -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/post/status
{"msg":"complete","test value"":183.26, "count":42450}

GET

Este endpoint faz um busca na memória para retornar o resultado

$ curl -i -XGET -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/brz/ngdp_r/2002
{"Country":"BRZ","Indicator":"NGDP_R","Value":183.26,"Year":2002}

PUT

Este endpoint irá fazer uma atualização na base de dados que está em memória, se não existir o dado ele irá criar um novo.

$ curl -i -XPUT -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/brz/ngdp_r/2002 \
-d '{"value":333.98}'

GET

Fazendo um request para checar se o que alteramos ou criamos novo está na base de dados.

$ curl -i -XGET -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/brz/ngdp_r/2002
{"Country":"BRZ","Indicator":"NGDP_R","Value":333.98,"Year":2002}

DELETE

Este endpoint irá remove o dado de nossa base de dados memória.

$ curl -i -XPUT -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/brz/ngdp_r/2002 

GET

Este endpoint irá retornar o tamanho que encontra-se a nossa base de dados na memória

$ curl -i -XGET -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/size
{"size":42450}

growth's People

Contributors

jeffotoni avatar arieldossantos avatar cassiobotaro avatar marioidival avatar wedneyyuri avatar

Watchers

James Cloos 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.