2015-10-26 19 views
15

私のシナリオは次のとおりです。に応じて格納されcicaと新しいペット:REST APIドキュメントをスワッガーするためのJavaクライアントコードを生成する方法

PetApi petApi = new PetApi(); 
Pet pet = new Pet; 
pet.setName("cica"); 
pet.setId(1L); 
petApi.addPet(pet); 
System.out.println(petApi.getById(1L));` 

Expexted出力:

は、私はのように、上記のREST API用に生成されたJavaクライアントを使用したい.json例えば:http://petstore.swagger.io/v2/swagger.json 闊歩を持っています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プロジェクトのコードは、サーバーコードです。 PetApi.java@RequestMappingのような注釈があり、WebMvcConfiguration.classもあります。

私はサーバースタブを持っていません。私はpetstore REST API用のクライアントライブラリを用意したいと思います。

私に適したクライアントライブラリを生成するツールはありますか?私はサーバーのスタブを変更する必要があります、それはすべてのモデルを持っているか、または私は単純なspringRestTemplateを使用する必要がありますか?

ありがとうございます!

答えて

9

Swagger Codegen(サーバー側の技術であるspring-mvcを使用)のパラメータ-lに適切な値を使用しないと思います。値javaを使用できます。

Swaggerコンテンツからコードを生成できるツールRestlet Studioがあります。 Javaの場合、主にRestletフレームワークに依存していますが、あなたのニーズに合うと思います。

それは、 ティエリー

+1

感謝。私はマニュアルのこのセクションをどうやって見逃すことができるかわからないが、これは私が必要としていた答えだった。 –

8

代わりにJARを使用するのではなく、あなたも何かをインストールすることなく、オンラインでのSDK(ジャワ、ルビー、PHPなど)を生成するためにhttps://generator.swagger.ioを使用することができますが、あなたがお役に立てば幸いです。次に例を示します。

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"} 

あなたは、リンクからzip形式のSDKをダウンロードすることができます。 https://generator.swagger.ioの出力のカスタマイズの詳細オプションについて

https://github.com/swagger-api/swagger-codegen#online-generators

(SWAGGERジェネレータは、あなたが同様にあなたの地元の闊歩ジェネレータを実行することができます闊歩codegenのプロジェクト(無料、オープンソース)の一部である)

を参照してください。

Java APIクライアントジェネレータは、2017年7月現在、次のHTTPライブラリをサポートしています。Jersey 1.x & 2.x、Retrofit 1.x & 2。X、okhttp、装う、RESTEasyに、RestTemplate

5

あなたのシナリオでは、あなたのコマンドはjaveに闊歩を変換する

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 

このような

その他のオプションを見てする必要があります:

GitHubのプロジェクトでそれは、Javaクライアントまたはサーバコードに闊歩を変換するときに使用するライブラリ(ジャージ、jersey2、okhttp-gson、など)を決定するのはあなた次第ですけど。 generator.swagger.ioではdecide which library to useも可能です。使用するライブラリを選択できるようにするにはenhancement to editor.swagger.ioがあります。考慮すべきことは、swagger.ioオプションは完全にフリーであるのに対して、RestletとAPIMATICはフリーミアムであるということです。

+1

editor.swagger.ioはgenerator.swaggerを使用します。APIクライアント、サーバースタブ、およびAPIドキュメントを生成するために、swagger codegenプロジェクトによっても強化されています。 –

+0

@ wing328あなたが正しいと思いますが、あなたがswagger-codegenプロジェクトまたはオンライン版(generator.swagger.io)を使用してもまだ違いがあることはわかっています。オンラインでは、変換に使用するライブラリを選択することはできません。 – Huber

+0

できます。さまざまなオプションを渡して出力をカスタマイズする方法については、https://github.com/swagger-api/swagger-codegen#online-generatorsを参照してください。 editor.swagger.ioには、メニューを追加して出力をカスタマイズする方法もあります:https://github.com/swagger-api/swagger-editor/issues/713 –

-4

スワッガージェネレータはJava SDKを生成しますが、APIMATIC sdkは非常に成熟しており、詳細で、Swagger Genの柔軟性があります。APIMATIC SDKジェネレータを試してみてください。

-1

それを行うには、おそらく最も簡単な方法:

  1. wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar
  2. java -jar swagger-codegen-cli-2.2.1.jar generate -l <language> -i <pathOrUrlOfSwaggerSpec>

詳細情報here

0

@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 

は-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の/闊歩仕様にURLをswaggerUrlを使用する代わりに、URL

の完全闊歩スペックJSONペイロードを送信

、 のことができます。 JSONペイロードにspecを含む仕様も含まれています。

{ 
    "options": {}, 
    "spec": { 
    "swagger": "2.0", 
    "info": { 
     "version": "1.0.0", 
     "title": "Test API" 
    }, 
    ... 
    } 
} 

詳細:答えをOfficial Doc

+0

これはトピックに関連しているとは思わない。 UNIXシステムでは、「curl」コマンドの使用法やインストール方法も異なると思います。 –

+0

@ csikos.balint私が試したときに証明書のエラーが発生したので関連しています...私はここでカールのランダムオプションを追加していませんでした。 –