@PostMapping(produces = "application/json", consumes = "application/json")
public ResponseEntity<Book> addBook(
@RequestBody(description = "Book to add.", required = true,
content = @Content(
schema=@Schema(implementation = Book.class)))
@Valid Book book
) {
return ResponseEntity.ok(bookRepository.add(Book));
}
2.
@PostMapping(produces = "application/json", consumes = "application/json")
public ResponseEntity<BasicBook> addBook(
@RequestBody(description = "Book to add.", required = true,
content = @Content(
schema=@Schema(allOf = BasicBook.class, oneOf = {
HomeScience.class, GeneralScience.class })))
@Valid BasicBook book
) {
return ResponseEntity.ok(bookRepository.add(Book));
}
以上代码段 1.工作正常。在 Swagger UI 中,我可以看到带有示例值的 RequestBody,我可以在其中执行它。
但是对于片段 2。当我尝试继承(即 oneOf、allOf 或 anyOf)时,此架构不起作用。只有 BasicBook 属性进入(Swagger UI)RequestBody 的示例值。
我也试过@Parameter。这是代码
3.
@PostMapping(produces = "application/json", consumes = "application/json")
public ResponseEntity<BasicBook> addBook(
@Parameter(required = true, description = "DTO for book.", content = {
@Content(mediaType = "application/json", schema = @Schema(allOf = BasicBook.class, oneOf = {
HomeScience.class, GeneralScience.class }, discriminatorMapping = {
@DiscriminatorMapping(value = "HOME", schema = HomeScience.class),
@DiscriminatorMapping(value = "GENERAL", schema = GeneralScience.class) }, discriminatorProperty = "type")) })
@RequestBody @Valid BasicBook book
) {
return ResponseEntity.ok(bookRepository.add(Book));
}
片段 3.也没有给出想要的结果。
如何在 RequestBody 中使用 oneOf、allOf 或 anyOf。