2016-02-15 18 views
8

私はSpring Bootを使用してマイクロサービスを開発しました。 REST APIのドキュメントはSwaggerで作成されています。いくつかのRESTリソースは、Springの概念を利用してページングを自由に提供します。以下は例です:私が闊歩ページを開くとSpring Pageableインターフェイスのスワッガードキュメント

@RequestMapping(value = "/buckets", method = GET) 
public PagedResources list(Pageable pageable, PagedResourcesAssembler assembler) { 
    return bucketService.listBuckets(pageable, assembler); 
} 

、以下のフォームは、リソースのために提供されています:

enter image description here

私が持っている問題は、ページング可能なパラメータは、コンテンツで検出されたということです型アプリケーション/ jsonと私はどのようにページサイズを変更する値を渡すか分からない。すべての値は無視されるようです。

クエリパラメータをJSONオブジェクトとして渡すことはできますか?またはPageableインタフェースに含まれるgetter用の独立したクエリパラメータフィールドを生成するようにSwaggerを構成することは可能ですか?

私はGradleのでSpringfoxを使用していますのでご注意ください。

compile 'io.springfox:springfox-spring-web:2.3.1' 
compile 'io.springfox:springfox-swagger2:2.3.1' 
compile 'io.springfox:springfox-swagger-ui:2.3.1' 
+0

あなたはRESTコントローラから闊歩仕様を生成するために、バネキツネを使用していますか? –

+0

はい、バージョン_2.3.1_でSpringfoxを使用しています。 – Laurent

答えて

15

これは春フォックスの既知の問題です。問題#755を参照してください。この時点でzdilaのコメント2に基づいて、@ApiImplicitParamsを追加することは理想的ではありませんが、動作します。 @ApiImplicitParams

@ApiImplicitParams({ 
    @ApiImplicitParam(name = "page", dataType = "integer", paramType = "query", 
      value = "Results page you want to retrieve (0..N)"), 
    @ApiImplicitParam(name = "size", dataType = "integer", paramType = "query", 
      value = "Number of records per page."), 
    @ApiImplicitParam(name = "sort", allowMultiple = true, dataType = "string", paramType = "query", 
      value = "Sorting criteria in the format: property(,asc|desc). " + 
        "Default sort order is ascending. " + 
        "Multiple sort criteria are supported.") 
}) 

[Swagger UI showing @ApiImplicitParams for Pageable]

1https://github.com/springfox/springfox/issues/755

2https://github.com/springfox/springfox/issues/755#issuecomment-135059871

+1

私は 'dataType =" int "'を使わなければならないことが分かりました。そうでなければ、データ型は画像のようにUndefinedとして出てきます。 – pauli

2

Vineet Bhatia氏の答えは正常に見えます。しかし、私は状況に直面しました。いつ@ApiIgnor@ApiParam(hidden = true)が動作せず、asemblerとpageableのパラメータを見ることができます。次の行を追加してこの問題を解決しましたSwaggerConfigのDocket Beanに次の行を追加してこの問題を解決しました。

2

Vineetの回答ローカルホストで実行していない場合、Bhatiaの検証に問題があります。整数パラメータについては、jsonスキーマに対応していないと主張します。

だから私は、整数を文字列に変更:

@ApiImplicitParams({ 
     @ApiImplicitParam(name = "page", dataType = "string", paramType = "query", 
       value = "Results page you want to retrieve (0..N)"), 
     @ApiImplicitParam(name = "size", dataType = "string", paramType = "query", 
       value = "Number of records per page."), 
     @ApiImplicitParam(name = "sort", allowMultiple = true, dataType = "string", paramType = "query", 
       value = "Sorting criteria in the format: property(,asc|desc). " + 
         "Default sort order is ascending. " + 
         "Multiple sort criteria are supported.") 
}) 
関連する問題