我們使用Spring + Jackson(Java)。在我們的API中,我們可以發送不同的對象到同一個端點。 例如如何描述Swagger中的多態端點?
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = As.PROPERTY,
property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Dog.class, name = "dog"),
@JsonSubTypes.Type(value = Cat.class, name = "cat")
})
public static class Animal {
}
@JsonTypeName("dog")
public static class Dog extends Animal {
public double barkVolume;
}
@JsonTypeName("cat")
public static class Cat extends Animal {
boolean likesCream;
public int lives;
}
@Controller
public class MyController {
//REST service
@RequestMapping(value = "test")
public @ResponseBody String save(@RequestBody Animal animal){
System.out.println(animal.getClass());
return success;
}
}
發送到/測試
{
"type": "dog",
"barkVolume": 23.3
}
將顯示Dog.class
發送到/測試
{
"type": "cat",
"likesCream": true,
"lives": 42
}
將顯示Cat.class
如何描述Swagger中的多態端點?