使用Spring自定义解析器注释的Swagger OpenApi动态查询参数名称

使用Spring自定义解析器注释的Swagger OpenApi动态查询参数名称,swagger,openapi,springdoc,springdoc-openapi-ui,Swagger,Openapi,Springdoc,Springdoc Openapi Ui,我试图弄清楚如何向SpringDocOpenApi表明正在使用HandlerMethodArgumentResolver生成自定义对象,它截获一些传入的请求参数并从中创建一个对象。这个概念实际上与Spring使用@Pageable时的概念一样 以下是我的自定义对象的某些部分: class FlightRequestHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { FlightRequestHandle

我试图弄清楚如何向
SpringDoc
OpenApi
表明正在使用
HandlerMethodArgumentResolver
生成自定义对象,它截获一些传入的请求参数并从中创建一个对象。这个概念实际上与Spring使用
@Pageable
时的概念一样

以下是我的自定义对象的某些部分:

class FlightRequestHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
FlightRequestHandlerMethodArgumentResolver() {
}

@Override
boolean supportsParameter(final MethodParameter parameter) {
    return FlightRequest.class.equals(parameter.getParameterType());
}

@Override
Object resolveArgument(
        final MethodParameter parameter,
        final ModelAndViewContainer mavContainer,
        final NativeWebRequest webRequest, final WebDataBinderFactory binderFactory) throws Exception {
    final Map<String, String[]> parameterMap = webRequest.getParameterMap()
    // query param names are configurable
    // implementation about finding query param names is ommited
    return new FlightRequest(parameterMap)
}
使用带有默认查询参数名称的
FlightRequest
的控制器:

@RequestMapping(value = "/flights", method = RequestMethod.GET)
Flights flights(FlightRequest flightRequest, HttpServletResponse response) {
    return flightSearchService.retrieveFlights(flightRequest);
}
@RequestMapping(value = "/current-flights", method = RequestMethod.GET)
Flights flights(@FlightRequestParams(fromDateParamName="current-flights-from", toDateParamName="current-flights-till) FlightRequest flightRequest, HttpServletResponse response) {
    return flightSearchService.retrieveFlights(flightRequest);
}
使用带有自定义查询参数名称的
FlightRequest
的控制器:

@RequestMapping(value = "/flights", method = RequestMethod.GET)
Flights flights(FlightRequest flightRequest, HttpServletResponse response) {
    return flightSearchService.retrieveFlights(flightRequest);
}
@RequestMapping(value = "/current-flights", method = RequestMethod.GET)
Flights flights(@FlightRequestParams(fromDateParamName="current-flights-from", toDateParamName="current-flights-till) FlightRequest flightRequest, HttpServletResponse response) {
    return flightSearchService.retrieveFlights(flightRequest);
}
正如您在上面的示例中所看到的,每个端点都可以覆盖默认的查询参数名称。

我如何向
Spring Doc
表明这一点?

这里您似乎没有使用Spring注释,而是使用您自己的:@FlightRequestParams

如果您确实希望动态添加默认值,那么您可以为注释编写自己的注释,就像为
@PageableDefault
编写注释一样。 然后将其声明为Springbean,如下所示


或者最简单的方法是使用
@parameter
注释声明参数值。你可以看到一个例子。

这个问题已经有一段时间了。请把它贴在邮箱里。如果问题已经存在,请在问题的评论中说明。