我正在进行一个spring-boot项目,将OPENAPI作为api文档的工具。
我试图用直观的输入(page-pageSize-sort(覆盖UI中可分页json对象的显示
public OperationCustomizer parameterCustomizer() {
return (Operation operation, HandlerMethod handlerMethod) -> {
Parameter page = new Parameter()
.in(ParameterIn.QUERY.toString())
.schema(new IntegerSchema()._default(0))
.name("page")
.description("La page (0..N)")
.required(true);
Parameter size = new Parameter()
.in(ParameterIn.QUERY.toString())
.schema(new IntegerSchema()._default(10))
.name("pageSize")
.description("Nombre de résultats par page")
.required(true);
Parameter sort = new Parameter()
.in(ParameterIn.QUERY.toString())
.schema(new ArraySchema())
.name("sort")
.description("Critère de tri avec le format: property(,asc|desc). "
+ "Tri par défaut: ascendant. "
+ "Multiple critères de tri sont supportés.");
if(operation.)
operation.addParametersItem(page);
operation.addParametersItem(size);
operation.addParametersItem(sort);
return operation;
};
}
这是有效的,但参数page、pageSize和sort已添加到所有方法中如何使它只适用于需要分页的方法?
找到它!如果参数类型中存在可分页类,我必须检查handlerMethod:
public OperationCustomizer parameterCustomizer() {
return (Operation operation, HandlerMethod handlerMethod) -> {
if (Arrays.asList(handlerMethod.getMethod().getParameterTypes()).contains(Pageable.class)) {
Parameter page = new Parameter()
.in(ParameterIn.QUERY.toString())
.schema(new IntegerSchema()._default(0))
.name("page")
.description("La page (0..N)")
.required(true);
Parameter size = new Parameter()
.in(ParameterIn.QUERY.toString())
.schema(new IntegerSchema()._default(10))
.name("pageSize")
.description("Nombre de résultats par page")
.required(true);
Parameter sort = new Parameter()
.in(ParameterIn.QUERY.toString())
.schema(new ArraySchema())
.name("sort")
.description("Critère de tri avec le format: property(,asc|desc). "
+ "Tri par défaut: ascendant. "
+ "Multiple critères de tri sont supportés.");
operation.addParametersItem(page);
operation.addParametersItem(size);
operation.addParametersItem(sort);
}
return operation;
};
}