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
クラス:
public class FlightRequest {
@Parameter(name = "startDate")
private final LocalDate startDate;
@Parameter(name = "endDate")
private final LocalDate endDate;
FlightRequest (LocalDate startDate, LocalDate endDate) {
this.submissionStartDate = submissionStartDate;
this.submissionEndDate = submissionEndDate;
}
FlightRequest
デフォルトのクエリ パラメータ名を使用するコントローラ:
@RequestMapping(value = "/flights", method = RequestMethod.GET)
Flights flights(FlightRequest flightRequest, HttpServletResponse response) {
return flightSearchService.retrieveFlights(flightRequest);
}
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
ますか?