Maison >développement back-end >Golang >Comment utiliser un client go http personnalisé avec le code client go généré à partir de la spécification openapi

Comment utiliser un client go http personnalisé avec le code client go généré à partir de la spécification openapi

WBOY
WBOYavant
2024-02-06 09:55:07627parcourir

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

Contenu de la question

Je travaille sur la génération d'une bibliothèque client http basée sur la spécification api du format open api.

La commande que j'ai utilisée pour le générer est similaire à celle-ci

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

Cela créera une structure similaire à celle ci-dessous dans le code généré

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
}

quel httpclient 字段将用于发出请求。理想情况下,应该导入此包,将客户端分配给 httpclient champ, et ils devraient pouvoir faire des requêtes http via cela.

Mais dans mon cas, je dois utiliser une bibliothèque personnalisée pour faire la demande. Disons que ma bibliothèque est un client de type customhttp。我必须使用这个库来创建 *customhttp.client 类型的客户端(这只是 *http.client, mais avec quelques plugins supplémentaires). Comment puis-je faire ceci? Est-il possible de le faire sans mettre à jour manuellement le code généré automatiquement ?

Je suppose que si je pouvais le faire générer du code pour les httpclient 的类型是一个实现 do méthodes de l'interface, je pourrais l'attribuer à mon client ? Mais je ne sais pas non plus quoi faire.


La bonne réponse


peut être modifiée via le go client

Récupérez le modèle depuis le référentiel :

openapi-generator-cli author template -g go -o tmp/mygotemplates

Vous disposez désormais d'une copie locale : modifiez le modèle que vous souhaitez personnaliser, dans ce cas configuration.mustache.
Ici, vous pouvez importer le code et les modules requis et renommer le code existant si nécessaire. Ajoutez votre bibliothèque client personnalisée.

Allez-y et utilisez votre propre modèle pour générer du code :

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

Le code généré inclut désormais votre code personnalisé et vos bibliothèques. Cette approche offre la flexibilité dont vous avez besoin, mais au prix de la maintenance d'une version personnalisée du modèle (que vous devrez peut-être mettre à jour à l'avenir, par exemple).

Ceci est un article sur la génération de code pour référence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer