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