Поддерживает ли RAML несколько схем ответов для одного и того же типа контента?
В моем проекте все классы POJO расширяют родительский класс. Поскольку у моего контроллера есть один метод, тип возвращаемого значения которого является родительским классом, но на самом деле он возвращает дочерний класс, здесь я использую концепцию полиморфизма, т.е. я типизирую дочерний класс в родительский класс.
В коде генерации RAML: код генератора RAML в основном использует сигнатуру метода контроллера, поскольку сигнатура содержит родительский класс, поэтому он будет генерировать схему Parent, но на самом деле нам нужна схема фактического ответа.
Есть ли добавить две схемы в ответ API RAML? Или есть ли способ получить схему фактического ответа API, где используется концепция полиморфизма?
1 ответ
Подумайте об использовании Union Type и Discriminator. Экземпляр типа объединения должен соответствовать всем ограничениям хотя бы одного связанного типа. Таким образом, экземпляр типа объединения определяется как Phone|Notebook
должен быть либо экземпляром Phone
или же Notebook
(или оба из них). Дискриминатор позволяет выводить конкретный тип отдельного объекта во время выполнения, поэтому он похож на концепцию полиморфизма.