使用Golang實現Swagger介面文檔

Swagger是一個面向開發者的API框架,用於設計、構建、文檔化和消費RESTful Web服務,其功能強大,被廣泛應用在Web開發中。本文將介紹如何使用Golang實現Swagger介面文檔。

一、編寫Golang代碼

首先,我們需要先編寫Golang代碼實現Web服務。在本例中,我們使用`go-chi/chi`包來構建RESTful路由。以下是一個簡單的`main.go`文件,它將監聽埠`8080`,並響應GET請求。

“`go
package main

import (
“net/http”

“github.com/go-chi/chi”
)

func main() {
r := chi.NewRouter()

r.Get(“/”, func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(“Hello World!”))
})

http.ListenAndServe(“:8080”, r)
}
“`

二、添加Swagger文檔支持

要使用Swagger,我們需要使用一個Swagger庫,如`go-swagger/go-swagger`。我們還需要通過注釋定義API的請求和響應,將其轉換為Swagger規範。以下是我們更新後的`main.go`文件。

“`go
package main

import (
“net/http”

“github.com/go-chi/chi”
“github.com/go-chi/chi/middleware”
“github.com/go-chi/docgen”
“github.com/go-chi/render”
“github.com/swaggo/http-swagger”
“github.com/swaggo/swag”
)

// @title My API
// @version 1.0
// @description This is a sample API
// @host localhost:8080
// @BasePath /
func main() {
r := chi.NewRouter()

r.Use(middleware.Logger)
r.Use(render.SetContentType(render.ContentTypeJSON))

r.Get(“/”, func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(“Hello World!”))
})

r.Get(“/swagger/*”, httpSwagger.Handler(
httpSwagger.URL(“http://localhost:8080/swagger/doc.json”), //The url pointing to API definition”
))

// swagger:route GET /users users listUsers
//
// Lists all users.
//
// This will show all available users.
//
// Consumes:
// – application/json
//
// Produces:
// – application/json
//
// Schemes: http, https, ws, wss
//
// Responses:
// 200: usersResponse
r.Get(“/users”, func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{“message”: “This shows all available users.”}`))
})

// swagger:response usersResponse
type usersResponse struct {
//in:body
Body struct {
// message of the response
Message string `json:”message”`
} `json:”body”`
}

// Generate Swagger specification
swaggerSpec := swag.New(
swag.WithBasePath(“”),
swag.WithTitle(“My API”),
swag.WithVersion(“1.0”),
swag.WithDescription(“This is a sample API”),
)

// Generate Swagger JSON
swaggerJSON, _ := docgen.JSONRoutesDoc(r)
swaggerSpec = json.RawMessage(swaggerJSON)

// Serve Swagger JSON
r.Get(“/swagger/doc.json”, func(w http.ResponseWriter, r *http.Request) {
w.Header().Set(“Content-Type”, “application/json”)
w.Write(swaggerJSON)
})

http.ListenAndServe(“:8080”, r)
}
“`

在此代碼中,我們引入了以下包:

– `github.com/go-chi/middleware`:中間件支持。
– `github.com/go-chi/docgen`:生成Swagger規範。
– `github.com/swaggo/http-swagger`:Swagger UI。

我們使用Swagger注釋說明介面的請求和響應規範,如上例所示。

使用`swag.New`方法生成Swagger規範,再使用`docgen.JSONRoutesDoc`方法生成Swagger JSON。

最後,我們添加一個路由,用於返回Swagger JSON。這個路由將在瀏覽器中訪問`http://localhost:8080/swagger/index.html`時使用。

三、運行應用程序

在本例中,我們可以通過運行以下命令來運行應用程序:

“`bash
go run .
“`

現在,我們可以在瀏覽器中訪問`http://localhost:8080/swagger/index.html`來查看API的Swagger文檔。

四、總結

在本文中,我們學習了如何使用Golang實現Swagger介面文檔。我們編寫了一個簡單的Golang Web服務,並使用Swagger庫和注釋添加了API規範。這使得我們可以使用Swagger UI輕鬆地瀏覽我們的API。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/270261.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 13:36
下一篇 2024-12-16 13:36

相關推薦

  • 使用Spire.PDF進行PDF文檔處理

    Spire.PDF是一款C#的PDF庫,它可以幫助開發者快速、簡便地處理PDF文檔。本篇文章將會介紹Spire.PDF庫的一些基本用法和常見功能。 一、PDF文檔創建 創建PDF文…

    編程 2025-04-29
  • 使用Golang調用Python

    在現代軟體開發中,多種編程語言的協作是相當普遍的。其中一種使用場景是Golang調用Python,這使得在使用Python庫的同時,可以利用Golang的高性能和強大並發能力。這篇…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Golang創建黑色背景圖片的方法

    本文將從多個方面介紹使用Golang創建黑色背景圖片的方法。 一、安裝必要的代碼庫和工具 在開始創建黑色背景圖片之前,我們需要先安裝必要的代碼庫和工具: go get -u git…

    編程 2025-04-29
  • Python爬蟲文檔報告

    本文將從多個方面介紹Python爬蟲文檔的相關內容,包括:爬蟲基礎知識、爬蟲框架及常用庫、爬蟲實戰等。 一、爬蟲基礎知識 1、爬蟲的定義: 爬蟲是一種自動化程序,通過模擬人的行為在…

    編程 2025-04-28
  • Python生成PDF文檔

    Python是一門廣泛使用的高級編程語言,它可以應用於各種領域,包括Web開發、數據分析、人工智慧等。在這些領域的應用中,有很多需要生成PDF文檔的需求。Python有很多第三方庫…

    編程 2025-04-28
  • Python介面自動化測試

    本文將從如下多個方面對Python編寫介面自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 介面自動化測試是軟體測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • Jadoor門鎖開發介面接入指南

    本文將從多個方面詳細介紹如何將門鎖接入Jadoor平台的開發介面,方便開發者們快速實現門鎖遠程控制、開鎖記錄查看等功能。 一、Jadoor門鎖開發介面簡介 Jadoor是一款用於密…

    編程 2025-04-27
  • 後端介面設計開發經驗分享

    在受到前端某些限制或特殊需求時,後端介面的設計和開發顯得尤為重要。下面從以下幾個方面進行講述。 一、命名規範 合理的命名規範可以大大提高介面的可讀性和可維護性。以下是一些命名規範的…

    編程 2025-04-27
  • 期貨數據介面 Python:打通數字資產交易數據的關鍵

    本文將從以下幾個方面討論期貨數據介面 Python: 一、數據介面簡介 期貨數據介面是指為期貨從業人員提供用於獲取歷史、實時及未來交易數據的工具。Python是一種常用的編程語言,…

    編程 2025-04-27

發表回復

登錄後才能評論