ホームページ  >  記事  >  バックエンド開発  >  openapi 仕様から生成されたクライアント go コードでカスタム go http クライアントを使用する方法

openapi 仕様から生成されたクライアント go コードでカスタム go http クライアントを使用する方法

WBOY
WBOY転載
2024-02-06 09:55:07538ブラウズ

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

質問内容

Open API形式のAPI仕様に基づいてhttpクライアントライブラリを生成しようとしています。

生成に使用したコマンドは次のようなものです

openapi-generatorgenerate-g go -i spec.yaml -o code-gen-go -p packagename=mypackage

これにより、生成されたコードに次のような構造が作成されます

リーリー

httpclient フィールドはリクエストの作成に使用されます。理想的には、このパッケージをインポートし、クライアントを httpclient フィールドに割り当て、これを通じて http リクエストを実行できるようにする必要があります。

ただし、私の場合、リクエストを行うにはカスタム ライブラリを使用する必要があります。私のライブラリが customhttp であるとします。このライブラリを使用して、*customhttp.client タイプのクライアント (これは単なる *http.client タイプのクライアントですが、いくつかの追加プラグインが含まれています) を作成する必要があります。これどうやってするの?自動生成されたコードを手動で更新せずにこれを行うことは可能ですか?

httpclient のタイプが do メソッドを実装するインターフェイスであるコードを生成できれば、クライアントにそれを割り当てることができると思います。でも、私も何をしたらいいのか分かりません。


正解


go client

で変更できます

リポジトリからテンプレートを取得します:

リーリー

これでローカル コピーが作成されました。カスタマイズするテンプレート (この場合は configuration.mustache) を変更します。
ここで、必要なコードとモジュールをインポートし、必要に応じて既存のコードの名前を変更できます。カスタム クライアント ライブラリを追加します。

引き続き独自のテンプレートを使用してコードを生成します:

リーリー

生成されたコードには、カスタム コードとライブラリが含まれています。このアプローチでは、必要な柔軟性が得られますが、テンプレートのカスタマイズされたバージョンを維持するコストがかかります (たとえば、将来更新が必要になる可能性があります)。

これは、 コード生成に関する参考記事です。

以上がopenapi 仕様から生成されたクライアント go コードでカスタム go http クライアントを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。