Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fabianogoes/poc-go-customer-api-rest-with-gin
Exemplo de uma API REST usando o framework Web Gin
https://github.com/fabianogoes/poc-go-customer-api-rest-with-gin
Last synced: about 2 months ago
JSON representation
Exemplo de uma API REST usando o framework Web Gin
- Host: GitHub
- URL: https://github.com/fabianogoes/poc-go-customer-api-rest-with-gin
- Owner: fabianogoes
- Created: 2023-10-16T01:10:34.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-24T01:26:05.000Z (about 1 year ago)
- Last Synced: 2024-10-16T19:59:40.441Z (2 months ago)
- Language: Go
- Size: 1.16 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PoC API Rest com Go e Gin
- [PoC API Rest com Go e Gin](#poc-api-rest-com-go-e-gin)
- [Stack](#stack)
- [Go](#go)
- [Instalação do Go](#instalação-do-go)
- [Get started with Go](#get-started-with-go)
- [Referencias para estudo de Go](#referencias-para-estudo-de-go)
- [Gin](#gin)
- [Download and Install](#download-and-install)
- [Documentação oficila do Gin](#documentação-oficila-do-gin)
- [Zap - logger](#zap---logger)**Objetivo:** Praticar como criar uma API Rest usando a linguagem [Go](https://go.dev/) com framework [Gin](https://github.com/gin-gonic/gin)
## Stack
- [Go](https://go.dev/)
- [Gin - Web Framework](https://gin-gonic.com/)
- [zap - logger](https://github.com/uber-go/zap)
- [UUID - uuid generate](https://pkg.go.dev/github.com/google/uuid#section-readme)## Go
> Crie sistemas simples, seguros e escaláveis com Go
> - All releases: https://go.dev/dl/
> - Download and install: https://go.dev/doc/install### Instalação do Go
1. Download
2. Remova qualquer instalação anterior do Go excluindo a pasta `/usr/local/go` (se existir) e extraia o arquivo que você acabou de baixar em /usr/local, criando uma nova árvore Go em /usr/local/go:
```shell
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz
```
3. Adicione `/usr/local/go/bin` à variável de ambiente PATH.
> Nota: As alterações feitas em um profile podem não ser aplicadas até a próxima vez que você fizer login no computador.
> Para aplicar as alterações imediatamente, basta executar os comandos shell diretamente ou executá-los a partir do perfil usando um comando como `source $HOME/.profile`.
4. Verifique se você instalou o **Go** abrindo um prompt de comando e digitando o seguinte comando:
```shell
go version
```### Get started with Go
- Visite o [tutorial de primeiros passos](https://go.dev/doc/tutorial/getting-started) para escrever um código Go simples. Demora cerca de 10 minutos para ser concluído.
- Veja também um tutorial sobre [Desenvolvendo uma API RESTful com Go e Gin](https://go.dev/doc/tutorial/web-service-gin)### Referencias para estudo de Go
- [Golang by Example](https://golangbyexample.com/)
- [Go by example](https://gobyexample.com/)
- [The Go Programming Language](https://github.com/golang/go)
- [Aprenda Golang](https://aprendagolang.com.br/)
- [Golang by geeksforgeeks](https://www.geeksforgeeks.org/golang/)
- [Roadmap.sh Go Developer](https://roadmap.sh/golang)## Gin
> O que é o **Gin**?
> **Gin** é um framework web escrito em **Golang**.**Rápido**
- Roteamento baseado em árvore Radix
- pequeno espaço de memória.
- Sem reflexão.
- Desempenho previsível da API.**Suporte de middleware**
Uma solicitação HTTP recebida pode ser tratada por uma cadeia de middleware e pela ação final.
Por exemplo: Logger, Autorização, GZIP e por fim postar uma mensagem no banco de dados.**Livre de falhas**
**Gin** pode detectar um pânico ocorrido durante uma solicitação *HTTP* e recuperá-lo.
Dessa forma, seu servidor estará sempre disponível.
Também é possível reportar esse pânico ao Sentry, por exemplo!**Validação JSON**
**Gin** pode analisar e validar o **JSON** de uma solicitação, verificando, por exemplo, a existência de valores obrigatórios.**Agrupamento de rotas**
Organize melhor suas **rotas**.
Autorização necessária versus não obrigatória, diferentes versões de API.
Além disso, os grupos podem ser aninhados infinitamente sem prejudicar o desempenho.**Gerenciamento de erros**
**Gin** fornece uma maneira conveniente de coletar todos os erros ocorridos durante uma solicitação *HTTP*. Eventualmente, o *middleware* pode gravá-los em um arquivo de log, em um banco de dados e enviá-los pela rede.**Renderização integrada**
**Gin** fornece uma API fácil de usar para renderização **JSON**, **XML** e **HTML**.**Extensível**
Criar um novo middleware é muito fácil, basta verificar o código de exemplo.### Download and Install
**Download and install**
```shell
go get -u github.com/gin-gonic/gin
```**Import**
```shell
import "github.com/gin-gonic/gin"
```**(Opcional)**
Importe net/http. Isto é necessário, por exemplo, se estiver usando constantes como http.StatusOK.
```shell
import "net/http"
```**(opcional)**
`import github.com/google/uuid` or `go get github.com/google/uuid`### [Documentação oficila do Gin](https://gin-gonic.com/docs/)
- [Introduction](https://gin-gonic.com/docs/introduction/)
- [Quickstart](https://gin-gonic.com/docs/quickstart/)
- [Deployment](https://gin-gonic.com/docs/deployment/)
- [Examples](https://gin-gonic.com/docs/examples/)
- [Testing](https://gin-gonic.com/docs/testing/)Veja [livros sobre Golang](./Livros.md)
## Zap - logger
> Blazing fast, structured, leveled logging in **Go**.
>**Installation**
```shell
go get -u go.uber.org/zap
```Documentation: https://github.com/uber-go/zap
[Exemplo de configuração](./configuration/logger/logger.go)
**Exemplo de uso**
```go
logger.Info("Application running...")
```