首页 > 解决方案 > 大摇大摆的多态性没有按预期工作

问题描述

我正在使用 springfox 2.9.2 版和 swagger 注释 1.5.x。ApiModel 注释支持使多态性工作所需的鉴别器、子类型和父属性,但我没有看到为启用多态性而生成的正确 apidocs。

这是我的注释代码。

@RestController
@RequestMapping("/api/vehicles")
public class VehicleController {
    private static final Logger LOGGER = LoggerFactory.getLogger(VehicleController.class);

    @PostMapping(consumes = {MediaType.APPLICATION_JSON_UTF8_VALUE})
    void post(@RequestBody Vehicle anyVehicle) {
        LOGGER.info("Vehicle : {}", anyVehicle);
    }
}

@ApiModel(discriminator = "type", subTypes = {Car.class, Bike.class})
public class Vehicle {
    String brand;
    String type;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}


@ApiModel(parent = Vehicle.class)
public class Car extends Vehicle {
    int noOfDoors;
    boolean powerWindows;

    public int getNoOfDoors() {
        return noOfDoors;
    }

    public void setNoOfDoors(int noOfDoors) {
        this.noOfDoors = noOfDoors;
    }

    public boolean isPowerWindows() {
        return powerWindows;
    }

    public void setPowerWindows(boolean powerWindows) {
        this.powerWindows = powerWindows;
    }
}

@ApiModel(parent = Vehicle.class)
public class Bike extends Vehicle {
    boolean pillion;

    public boolean isPillion() {
        return pillion;
    }

    public void setPillion(boolean pillion) {
        this.pillion = pillion;
    }
}

生成文档时,基本上显示了一个端点,该端点处理 POST 请求并将车辆作为模型。

这就是生成的 UI 的样子

我在这里所做的工作应该有效吗?有人可以指出我可以查看的 SpringFox 的工作示例吗?

标签: swaggerswagger-uispringfox

解决方案


discriminatorSwagger UI 中尚不支持对。您可以关注这些问题以获取状态更新:

鉴别器不会切换
模型中未显示的模式子类型


推荐阅读