我正在努力根據開放 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中文網其他相關文章!