Я описываю путь в файле openapi в моем приложении весенней загрузки.
Openapi генерирует класс api файла, который обрабатывает запросы http.
Также я использую swagger, который hepls создает действительный URL, где я также могу поместить параметры запроса.
Мне интересно, почему, имея весь этот сгенерированный персонал, я получаю нулевой объект вместо ожидаемого.
часть api.yaml
/films:
get:
summary: Отфильтрованные фильмы
operationId: findFilms
tags: [selections]
parameters:
- in: query
name: filter
schema:
type: object
properties:
genreId:
type: integer
year:
type: integer
countryId:
type: integer
style: deepObject
explode: false
responses:
200:
description: successfull response
content:
application/json:
schema:
$ref: 'list-schemas.yaml#/components/schemas/SelectionTo'
сгенерированный Java-класс
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen")
@Validated
@Api(value = "Selections")
public interface SelectionsApi {
default Optional<NativeWebRequest> getRequest() {
return Optional.empty();
}
@ApiOperation(value = "Отфильтрованные фильмы", nickname = "findFilms", , response = SelectionTo.class, tags={ "selections", })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "successful response", response = SelectionTo.class) })
@RequestMapping(value = "/films",
produces = { "application/json" },
method = RequestMethod.GET)
default ResponseEntity<SelectionTo> _findFilms(@ApiParam() @Valid @RequestParam(value = "filter", required = false) Filter filter) {
return findFilms(filter);
}
// Override this method
default ResponseEntity<SelectionTo> findFilms(Filter filter) {
getRequest().ifPresent(request -> {
...
});
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
сгенерированный класс параметров запроса
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen")
public class Filter {
@JsonProperty("genreId")
private Integer genreId = null;
@JsonProperty("year")
private Integer year = null;
@JsonProperty("countryId")
private Integer countryId = null;
public Filter genreId(Integer genreId) {
this.genreId = genreId;
return this;
}
реализующий интерфейс
@Override
public ResponseEntity<SelectionTo> findFilms(Filter filterType) {
//here filter is null !
return ResponseEntity.ok(transformer.transform(service.getItemsInfo()));
}
запрос
http://localhost/films?filter[genreId]=13&filter[year]=2021
Как можно улучшить файл openapi? Потому что это единственное, что я определил. Или в чем еще причина?