Documentanto uma api Go com Swagger
O Swagger é uma excelente ferramenta para realizar esse trabalho em qualquer API REST.
Vocês acreditam ser algo complexado e manual criar essa documentação? Vamos dar uma olhada.
Primeiramente, como o swagger está aí com o papel de documentar nossos métodos REST que estão exppostos, vamos trabalhar com ele diretamente na nossa camada de service no adapter http.
Começamos editando or arquivo
adapter/http/productservice/create.go
.// @Summary Create new product
// @Description Create new product
// @Tags product
// @Accept json
// @Produce json
// @Param product body dto.CreateProductRequest true "product"
// @Success 200 {object} domain.Product
// @Router /product [post]
func (service service) Create(response http.ResponseWriter, request *http.Request) {
...
}
Depois o arquivo
adapter/http/productservice/fetch.go
.// @Summary Fetch products with server pagination
// @Description Fetch products with server pagination
// @Tags product
// @Accept json
// @Produce json
// @Param sort query string true "1,2"
// @Param descending query string true "true,false"
// @Param page query integer true "1"
// @Param itemsPerPage query integer true "10"
// @Param search query string false ""
// @Success 200 {object} domain.Pagination
// @Router /product [get]
func (service service) Fetch(response http.ResponseWriter, request *http.Request) {
...
}
E por fim o arquivo
adapter/http/main.go
.// @title Clean GO API Docs
// @version 1.0.0
// @contact.name Vinícius Boscardin
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host localhost:port
// @BasePath /
func main() {
...
}
Bom, se nos rodarmos api agora nada vai acontecer! Vamos botar essas tags para funcionar. Em go usaremos 또는 CLI do Swaggo .
Com a lib instalada basta rodar na raiz do projeto o comando:
swag init -d adapter/http --parseDependency --parseInternal --parseDepth 2 -o adapter/http/docs
Isso vai gerar uma 파스타 chamada
docs
나 파스타 adapter/http
.Com isso vamos referenciar essa 파스타 na nossa rota no arquivo
adapter/http/main.go
.package main
import (
"context"
"fmt"
"log"
"net/http"
"github.com/boooscaaa/clean-go/adapter/postgres"
"github.com/boooscaaa/clean-go/di"
"github.com/gorilla/mux"
"github.com/spf13/viper"
/*adicionar essa linha */ httpSwagger "github.com/swaggo/http-swagger"
/*adicionar essa linha */ _ "github.com/boooscaaa/clean-go/adapter/http/docs"
)
func init() {
viper.SetConfigFile(`config.json`)
err := viper.ReadInConfig()
if err != nil {
panic(err)
}
}
// @title Clean GO API Docs
// @version 1.0.0
// @contact.name Vinícius Boscardin
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host localhost:port
// @BasePath /
func main() {
ctx := context.Background()
conn := postgres.GetConnection(ctx)
defer conn.Close()
postgres.RunMigrations()
productService := di.ConfigProductDI(conn)
router := mux.NewRouter()
/*adicionar essa linha */ router.PathPrefix("/swagger").Handler(httpSwagger.WrapHandler)
router.Handle("/product", http.HandlerFunc(productService.Create)).Methods("POST")
router.Handle("/product", http.HandlerFunc(productService.Fetch)).Queries(
"page", "{page}",
"itemsPerPage", "{itemsPerPage}",
"descending", "{descending}",
"sort", "{sort}",
"search", "{search}",
).Methods("GET")
port := viper.GetString("server.port")
log.Printf("LISTEN ON PORT: %v", port)
http.ListenAndServe(fmt.Sprintf(":%v", port), router)
}
프론티뉴! 아니오? Agora é só acessar no navegador o 링크
http://localhost:3000/swagger/index.html
.수아베즈
바이 나 페! Acredito totalmente em você, independente do seu nível de conhecimento técnico, você vai criar a melhor api em GO.
Se você se deparar com problemas que não consegue resolver, sinta-se à vontade para entrar em contato. Vamos 리졸버 isso juntos.
Como que faz 배포 disso ai?
Próximo post vamos configurar um ambiente para deploy com docker lá no heroku.
Repositório
Reference
이 문제에 관하여(Documentanto uma api Go com Swagger), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/booscaaa/documentanto-uma-api-go-com-swagger-2k05텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)