首頁 > 後端開發 > Golang > 如何將自訂 go http 用戶端與從 openapi 規範產生的客戶端 go 程式碼結合使用

如何將自訂 go http 用戶端與從 openapi 規範產生的客戶端 go 程式碼結合使用

WBOY
發布: 2024-02-06 09:55:07
轉載
610 人瀏覽過

如何将自定义 go http 客户端与从 openapi 规范生成的客户端 go 代码结合使用

問題內容

我正在努力根據開放 api 格式的 api 規範產生 http 用戶端庫。

我用來產生它的命令與此類似

openapi-generator生成-g go -i spec.yaml -o code-gen-go -p packagename=mypackage

這會在生成的程式碼中建立一個類似下面的結構

type Configuration struct {
    Host             string            `json:"host,omitempty"`
    Scheme           string            `json:"scheme,omitempty"`
    DefaultHeader    map[string]string `json:"defaultHeader,omitempty"`
    UserAgent        string            `json:"userAgent,omitempty"`
    Debug            bool              `json:"debug,omitempty"`
    Servers          ServerConfigurations
    OperationServers map[string]ServerConfigurations
    HTTPClient       *http.Client
}
登入後複製

其中 httpclient 欄位將用於發出請求。理想情況下,應該導入此包,將客戶端分配給 httpclient 字段,並且他們應該能夠透過此發出 http 請求。

但就我而言,我必須使用自訂庫來發出請求。假設我的函式庫是 customhttp。我必須使用這個庫來建立 *customhttp.client 類型的客戶端(這只是 *http.client 類型的客戶端,但帶有一些附加插件)。我怎樣才能做到這一點?是否可以在不手動更新自動產生的程式碼的情況下執行此操作?

我想如果我能讓它產生程式碼,httpclient 的類型是實作 do 方法的接口,我將能夠用它來指派我的客戶端?但我也不知道該怎麼做。


正確答案


可以透過修改 go 用戶端

從儲存庫中取得範本:

openapi-generator-cli author template -g go -o tmp/mygotemplates
登入後複製

您現在已經有了本機副本:修改您想要自訂的模板,在本例中為 configuration.mustache
您可以在此處匯入所需的程式碼和模組,必要時也可以重新命名現有程式碼。新增您的自訂客戶端庫。

繼續使用您自己的模板產生程式碼:

openapi-generator-cli generate \
-i openapi.yaml \
-t tmp/mygotemplates \
-g go \
-p packageName=myPackage \
-o src
登入後複製

產生的程式碼現在包括您的自訂程式碼和庫。此方法提供了您所需的靈活性,但代價是維護範本的自訂版本(例如,您將來可能需要更新)。

這是一篇關於文章程式碼產生作為參考。

以上是如何將自訂 go http 用戶端與從 openapi 規範產生的客戶端 go 程式碼結合使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板