{"id":18887362,"url":"https://github.com/elauso/go-rest-api","last_synced_at":"2026-02-24T06:30:17.727Z","repository":{"id":180038047,"uuid":"295286988","full_name":"elauso/go-rest-api","owner":"elauso","description":"API REST desenvolvida em golang.","archived":false,"fork":false,"pushed_at":"2020-09-20T03:20:03.000Z","size":121,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-07-10T05:28:59.980Z","etag":null,"topics":["golang","gorilla-mux","redis-pubsub","rest-api"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elauso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-14T02:51:34.000Z","updated_at":"2024-06-19T13:18:45.645Z","dependencies_parsed_at":"2024-05-05T09:30:49.961Z","dependency_job_id":null,"html_url":"https://github.com/elauso/go-rest-api","commit_stats":null,"previous_names":["elauso/go-rest-api"],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elauso%2Fgo-rest-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elauso%2Fgo-rest-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elauso%2Fgo-rest-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elauso%2Fgo-rest-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elauso","download_url":"https://codeload.github.com/elauso/go-rest-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239859563,"owners_count":19708863,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","gorilla-mux","redis-pubsub","rest-api"],"created_at":"2024-11-08T07:36:47.062Z","updated_at":"2026-02-24T06:30:17.681Z","avatar_url":"https://github.com/elauso.png","language":"Go","readme":"![gopher](./gopher.jpeg)\n\n# Go REST API\n\nEssa é uma API REST desenvolvida em Go.\n\nGo é uma linguagem de paradigma imperativo, compilada, com foco em produtividade. Possui tipagem estática, ou seja, as propriedades precisam ter tipos específicos. Por ser uma linguagem compilada possui um desempenho em performance melhor do que outras linguagens como python, java, etc.\n\nEssa é uma API simples para manter os registros de um catálogo de produtos. Possui dois endpoints para consulta e um para cadastro dos produtos. \n\nNo cadastro a aplicação persite o produto em um banco de dados postgresql. A aplicação também utiliza o redis como broker para cadastro de produtos via eventos.\n\n![arch](./diagram_arch.png)\n\nO redis é um banco de dados in-memory de alta performance. A partir da versão 5 foi disponibilizado a feature pub/sub que permite a utilização do banco como um broker de mensagens.\n\nDocumentação do redis: https://redis.io/topics/pubsub\n\nAprenda golang: https://tour.golang.org/welcome/1\n\n## Stack\n\n  Tecnologia           |  Versão       |\n-----------------------|---------------|\n  go                   | 1.14\n  gorilla-mux          | v1.8.0\n  lumberjack           | v2.0.0\n  postgres-driver      | v1.8.0\n  go-redis             | v8.1.3\n\n## Dependências\n\n* go1.14\n* docker\n* docker-compose\n* make\n\n## Instalação\n\n* Subida da aplicação docker: ``` make docker-build```\n* Subida da aplicação docker sem o make: ``` docker-compose up --build -d```\n\n## Execução\n\n* Para cadastrar um produto: ``` curl -i -X POST -H \"Content-Type: application/json\" http://localhost:8080/products -d '{\"name\":\"Test\",\"type\":\"ABC\",\"description\":\"description...\",\"price\":120.00}' ```\n* Para consultar um produto: ``` curl -i -H \"Accept: application/json\" http://localhost:8080/products/1 ```\n* Para listar todos os produtos: ``` curl -i -H \"Accept: application/json\" http://localhost:8080/products ```\n* Para registrar o produto via evento:\n```shell\ndocker exec -it redis /bin/sh\nredis-cli\npublish productCreateChannel '{\"name\":\"Test2\",\"type\":\"XYZ\",\"description\":\"produto evento\",\"price\":200.00}'\n```\nApós isso execute a api list e verifique se o seu produto foi cadastrado no catálogo.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felauso%2Fgo-rest-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felauso%2Fgo-rest-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felauso%2Fgo-rest-api/lists"}