Отключить сортировку значений полей по алфавиту
Я использую Spring Boot (v2.1.3 RELEASE) и SpringDoc. Я уже прошел https://springdoc.org/springdoc-properties.html и https://springdoc.org/, но похоже, что SpringDoc автоматически сортирует параметры по алфавиту. Как мы можем этого предотвратить?
@Operation(summary = "Find Students")
@Parameter(in=ParameterIn.QUERY, name="page", description="Results page you want to retrieve (0..N)", schema=@Schema(defaultValue = 0))
@Parameter(in=ParameterIn.QUERY, name="size", description="Number of records per page.", schema=@Schema(defaultValue =50))
@Parameter(in=ParameterIn.QUERY, name="search_type", description=AppConstants.SEARCH_TYPE, schema=@Schema(allowableValues= {"Starts", "Contains"},defaultValue = "Starts"))
@ApiCountryHeader
@GetMapping(value = "/students")
public ResponseEntity<List<Students>> findStudentss(
@Parameter(description = "") @RequestParam(required = false) String studentCd,
@Parameter(description = "") @RequestParam(required = false) String studentName,
@Parameter(hidden=true) String search_type){
....
....
...
return new ResponseEntity<>(studentts, HttpStatus.OK);
}
1 ответ
Поля не сортируются по алфавиту, но порядок объявления сохраняется.
Вы можете изменить порядок полей, используя различные доступные настройки:
- OpenApiCustomiser: для настройки объекта OpenAPI
- OperationCustomizer: для настройки операции на основе HandlerMethod
Например:
@RestController
public class HelloController {
@GetMapping(value = "/persons")
public String getPerson(String b, String a) {
return null;
}
@Bean
OperationCustomizer operationCustomizer() {
return (Operation operation, HandlerMethod handlerMethod) -> {
if ("getPerson".equals(handlerMethod.getMethod().getName())) {
List<Parameter> parameterList = operation.getParameters();
if (!CollectionUtils.isEmpty(parameterList))
Collections.reverse(parameterList);
}
return operation;
};
}
}