0
@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。

4

0 回答 0