Heim >Backend-Entwicklung >Golang >So verwenden Sie einen benutzerdefinierten Go-HTTP-Client mit Client-Go-Code, der aus der OpenAPI-Spezifikation generiert wurde

So verwenden Sie einen benutzerdefinierten Go-HTTP-Client mit Client-Go-Code, der aus der OpenAPI-Spezifikation generiert wurde

WBOY
WBOYnach vorne
2024-02-06 09:55:07627Durchsuche

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

Frageninhalt

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.


Die richtige Antwort


kann über den go-Client

geändert werden

Holen 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen