Ich arbeite an der Generierung einer http-Client-Bibliothek basierend auf der API-Spezifikation des offenen API-Formats.
Der Befehl, den ich zum Generieren verwendet habe, ähnelt diesem
openapi-generator生成-g go -i spec.yaml -o code-gen-go -p packagename=mypackage
Dadurch wird eine Struktur ähnlich der unten im generierten Code erstellt
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 }
welches httpclient
字段将用于发出请求。理想情况下,应该导入此包,将客户端分配给 httpclient
Feld, und sie sollten in der Lage sein, über dieses HTTP-Anfragen zu stellen.
Aber in meinem Fall muss ich eine benutzerdefinierte Bibliothek verwenden, um die Anfrage zu stellen. Nehmen wir an, meine Bibliothek ist ein Client vom Typ customhttp
。我必须使用这个库来创建 *customhttp.client
类型的客户端(这只是 *http.client
, jedoch mit einigen zusätzlichen Plugins. Wie kann ich das machen? Ist dies möglich, ohne den automatisch generierten Code manuell zu aktualisieren?
Ich denke, wenn ich es dazu bringen könnte, Code für die httpclient
的类型是一个实现 do
Methoden der Schnittstelle zu generieren, könnte ich es meinem Client zuweisen? Aber ich weiß auch nicht, was ich tun soll.
kann über den go-Client
geändert werdenHolen Sie sich die Vorlage aus dem Repository:
openapi-generator-cli author template -g go -o tmp/mygotemplates
Sie haben jetzt eine lokale Kopie: Ändern Sie in diesem Fall die Vorlage, die Sie anpassen möchten configuration.mustache
.
Hier können Sie den benötigten Code und die Module importieren und ggf. vorhandenen Code umbenennen. Fügen Sie Ihre benutzerdefinierte Clientbibliothek hinzu.
Machen Sie weiter und verwenden Sie Ihre eigene Vorlage, um Code zu generieren:
openapi-generator-cli generate \ -i openapi.yaml \ -t tmp/mygotemplates \ -g go \ -p packageName=myPackage \ -o src
Der generierte Code enthält jetzt Ihren benutzerdefinierten Code und Ihre Bibliotheken. Dieser Ansatz bietet die Flexibilität, die Sie benötigen, allerdings auf Kosten der Pflege einer angepassten Version der Vorlage (die Sie beispielsweise in Zukunft möglicherweise aktualisieren müssen).
Dies ist ein Artikel über Codegenerierung als Referenz.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie einen benutzerdefinierten Go-HTTP-Client mit Client-Go-Code, der aus der OpenAPI-Spezifikation generiert wurde. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!