利用バージョン:Springfox2.9.2
Spring Boot 2で簡単に作ったGETのAPIに、ほとんど設定なしでswaggeruiを表示してみたら以下のようになりました。
表示を改善する際の設定メモです。
ドキュメントのタイトルとバージョン番号
画像で「Api Documentation 1.0」と書いてある部分を変更します。
タイトルは「テストAPI」、バージョン番号はとりあえず0.0.1くらいに。
動作確認用なので、ライセンスなどは空で設定しました。
Swagger表示用に用意した@ConfigurationのクラスでDocket構築後に、.apiInfoメソッドにApiInfoオブジェクトを渡すことで設定できました。
@Configuration @EnableSwagger2 public class SwaggerConfiguration { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build() .apiInfo(getApiInfo()); } private ApiInfo getApiInfo() { return new ApiInfo("テストAPI", "説明", "0.0.1", "", new Contact("", "", ""), "", "", Collections.emptyList()); } }
basic-error-controllerを非表示にする
ApiSelectorBuilder.apisに渡すパラメータが原因ですね。作成したパッケージだけに絞ります。
上のapi()メソッド中の.apis()を以下のように変更。渡しているパラメータはパッケージ名です。
.apis(RequestHandlerSelectors.basePackage("biz.house_soft.positiondata"))
同時にModelsの下にあった自分で追加したわけではないModelAndView, Viewも非表示になってます。
コントローラーの表示を変更
@RestControllerをつけたおいたクラス名がほとんどそのままでているので、これを変更します。
名前とその右に表示される説明を設定するにはControllerに@Apiアノテーションをつけるのですが、説明に対応するdescriptionが@Deprecatedにマークされているのに気づきました。
代替策として推奨されていたのが、tagsをつけておいて、Docketで設定する方法。
まずControllerを
@RestController @Api(tags = "位置情報") public class PointDataController {
のようにtagsをつけて(この時点でControllerの名前はtagsの値に変わる)、Docketのbuild()後に、
@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("biz.house_soft.positiondata")) .paths(PathSelectors.any()) .build() .apiInfo(getApiInfo()) .tags(new Tag("位置情報", "位置情報の説明")); }
と.tagsにTagオブジェクトを渡してやるとその第2引数のdescriptionがコントローラーの右隣に表示されるようになりました。
コントローラー内の各メソッドの右側にメソッド名がそのままでていますが、これはメソッドのアノテーションに@ApiOperation(value=”位置情報全件取得”)を指定すると、valueの値が表示されます。
ここまでやるとこんな感じになりました。