4

一部のエラー コードについて、API のすべてのエンドポイントにデフォルトのエラー モデルを追加しようとしています。

次の問題を読んで、部分的な解決策を見つけました。

これは、そのカスタマイズ用に作成している Bean です。

    @Bean
    public OpenApiCustomiser customOpenApiCustomiser() {
        return openApi -> {
            openApi.getPaths().values().forEach(pathItem -> pathItem.readOperations().forEach(operation -> {

                Schema sharedErrorSchema = ModelConverters.getInstance()
                        .read(Error.class)
                        .getOrDefault("Error", new Schema());

                MediaType sharedMediaType = new MediaType().schema(sharedErrorSchema);
                Content sharedContent = new Content()
                        .addMediaType(APPLICATION_JSON_VALUE, sharedMediaType);

                ApiResponses apiResponses = operation.getResponses();

                ApiResponse response = new ApiResponse()
                        .description("Unhandled server error")
                        .content(sharedContent);
                apiResponses.addApiResponse("500", response);
            }));
        };
    }

そして、私の Error クラスは次のようになります。

public class Error {
    private String message;
    private List<ErrorItem> errorItems;
}

問題は、swagger-ui でエンドポイント定義の 1 つを開くと、次のエラーが発生することです。

Could not resolve reference: Could not resolve pointer: /components/schemas/ErrorItem does not exist in document

ErrorItem のスキーマを定義して、swagger-ui で使用できるようにするにはどうすればよいですか?

私は使っている:

  • スプリング ブート => 2.2.4.Release
  • springdoc-openapi-ui => 1.3.0
  • springdoc-openapi-security => 1.3.0
4

1 に答える 1