私のシナリオは次のとおりです。
私はswagger .jsonを持っています。例: http://petstore.swagger.io/v2/swagger.json 生成されたJavaクライアントを使用したいREST上記のAPI:
PetApi petApi = new PetApi();
Pet pet = new Pet;
pet.setName("cica");
pet.setId(1L);
petApi.addPet(pet);
System.out.println(petApi.getById(1L));`
拡張出力:cica
および新しいペットはREST API実装に従って格納されます。
次のコマンドを使用して、petstoreのサーバースタブを正常に生成しました。
Java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate
-i http://petstore.swagger.io/v2/swagger.json
-l spring-mvc
-o samples/server/petstore/spring-mvc
しかし、このMavenプロジェクトコードはサーバーコードです。 @RequestMapping
にはPetApi.Java
のような注釈があり、WebMvcConfiguration.class
もあります。
サーバースタブは必要ありません。 petstore REST API。のクライアントライブラリが必要です。
適切なクライアントライブラリを生成できるツールはありますか?サーバースタブを変更する必要があるので、すべてのモデルが含まれているのですか、それとも単純なspringRestTemplateを使用する必要がありますか?
答えてくれてありがとう!
Swagger Codegenのパラメーター-l
に正しい値を使用していないと思います(サーバー側テクノロジーであるspring-mvc
を使用します)。値Java
を使用してみてください。
また、Swaggerコンテンツからコードを生成できるツール Restlet Studio があることにも気付くでしょう。 Javaの場合、主にRestletフレームワークに依存していますが、ニーズに合うと思います。
お役に立てばと思います、ティエリー
JARを使用する代わりに、 https://generator.swagger.io を使用して、何もインストールせずにオンラインでSDK(Java、Ruby、PHPなど)を生成することもできます。以下に例を示します。
curl -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/Java
そして、ここにサンプル応答があります:
{"code":"1445940806041","link":"https://generator.swagger.io/api/gen/download/1445940806041"}
その後、リンクから圧縮されたSDKをダウンロードできます。
https://generator.swagger.io の出力のカスタマイズに関するその他のオプションについては、 https://github.com/swagger-api/swagger-codegen#online-を参照してください。ジェネレーター
(Swagger GeneratorはSwagger Codegenプロジェクト(無料のオープンソース)の一部であり、ローカルSwagger Generatorも実行できます)
2017年7月の時点で、Java APIクライアントジェネレーターは、Jersey 1.xおよび2.x、Retrofit 1.xおよび2.x、okhttp、Feign、RESTEasy、RestTemplateのHTTPライブラリをサポートしています。
シナリオでは、コマンドは次のようになります。
Java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate
-i http://petstore.swagger.io/v2/swagger.json
-l Java
-o samples/server/petstore/spring-mvc
Swaggerをjaveに変換する他のオプションは次のとおりです。
GitHubプロジェクトでは、swaggerをJavaクライアントまたはサーバーコードに変換するときに使用するライブラリ(jersey、jersey2、okhttp-gsonなど)を決定するのはあなた次第です。 .ioを使用することもできます 使用するライブラリを決定する 。 editor.swagger.ioの機能強化 を使用して、使用するライブラリを選択することもできます。 swagger.ioオプションは完全に無料ですが、RestletとAPIMATICはフリーミアムです。
おそらく最速で最も簡単な方法:
wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar
Java -jar swagger-codegen-cli-2.2.1.jar generate -l <language> -i <pathOrUrlOfSwaggerSpec>
詳細 こちら
@ wing328's answer への愚かな拡張です。
curl -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/Java
このエラーが発生した場合(SSL証明書の問題)
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
Curlに-kスイッチを追加します。例:
curl -k -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/Java
{"code":"7e542952-5385-4e34-8cf6-6196722fb18b","link":"https://generator.swagger.io/api/gen/download/7e542952-5385-4e34-8cf6-6196722fb18b"}
OpenAPI/Swagger仕様へのURLでswaggerUrlを使用する代わりに、仕様でJSONペイロードに仕様を含めることもできます。
{ "options": {}, "spec": { "swagger": "2.0", "info": { "version": "1.0.0", "title": "Test API" }, ... } }
詳細: 公式ドキュメント