メニューを閉じる

テクノデジタルグループ

メニューを開く

2020.03.31

未分類

SpringFoxでのSwaggerのリクエスト・レスポンス説明の共通化

SpringFoxについて

  • ・Spring Bootで作られたAPI向けのライブラリ。
  • ・導入すると、サーバーがSwagger Specをjsonで返してくれるようになる。
  • ・ソースコードにコメントを書く感覚でSwaggerを利用できるようになるので便利。

公式github

この記事では、SpringFoxにおけるリクエスト・レスポンス説明の共通化をいくつか紹介します。

1.group単位で共通のパラメータを設定する

springfoxはURLPathで区切られたgroupという単位に分けることができます。
このgroup単位で共通のリクエスト・レスポンスパラメータを設定することができます。

@Bean
  public Docket petApi() {
    return new Docket(DocumentationType.SWAGGER_2)
	    .groupName("sample-api")    
        .select()
        .pathMapping("/api/*")
        .build()
        .apiInfo(apiInfo())
		.globalResponseMessage(RequestMethod.GET,
            newArrayList(new ResponseMessageBuilder()
                .code(500)
                .message("500 message")
                .responseModel(new ModelRef("Error"))
                .build()))
		.globalOperationParameters(
            newArrayList(new ParameterBuilder()
                .name("someGlobalParameter")
                .description("Description of someGlobalParameter")
                .modelRef(new ModelRef("string"))
                .parameterType("query")
                .required(true)
                .build()));

 

globalResponseMessageが共通のレスポンスパラメータ説明の付与、

globalOperationParametersが、共通のリクエストパラメータ説明の付与です。

URLPathで区切るので、例えば「https://hoge.jp/api/~以下は、すべて共通のパラメータを持ちたい」といった時に使います。

参考:公式ドキュメント

2.継承元のClassに設定する

@ApiResponses(value = {
    @ApiResponse(code = 400, message = "ValidationError", response = ErrorResponse.class),
    @ApiResponse(code = 403, message = "Forbidden", response = ErrorResponse.class)
})
public class BaseController { ~ }

public class ApiController extends BaseController { ~ }

この例のように書くと継承先のClassのAPI全てに@ApiResponsesが適応されます。Class単位で共通のレスポンスを設定したい場合に使えます。

SpringFoxはいろいろな書き方のできるライブラリなので、「こんなことできないかな?」と思ったら、一度公式ドキュメントを探ってみるといいかもしれません。


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事