Pull to refresh

Comments 2

>Но текущая реализация RAML позволяет сделать такой mapping только 1 к 1, то есть, использовать types “как есть” внутри объявления API ресурсов.

Не очень понятно что имеется в виду если честно. Казалось бы ты вполне можешь один и тот же тип поюзать во многих ресурсах
>В RAML application data model это типы объявленные в блоке types, а resource model of an API — это то, что описывается в блоке resources RAML.

здесь речь о том, что же на самом деле описывается в блоке types: Application Data Model или Resource Data Model? Вот как раз на эту тему идут споры в сообществе.

Если Application Data Model, то очевидно это дает больше гибкости: можно создавать внешние инструменты которые полагаются на внутреннюю структуру приложения, а не только на его Resource Model. Например, имея описания Application Data Model, можно создать генератор классов описывающих доменную модель сервера приложения, кодогенератор миграций баз данных и т д (короче, уровень бизнес логики). Но это в свою очередь накладывает большую сложность описания RAML документа: где-то нужно будет делать маппинг между описаниями Application Data Model и Resource Data Model.
В свою очередь, имея Resource Model можно генерировать только HTTP уровень серверной части (грубо говоря объекты описывающие модели Requests, Controllers и Routes), оставляя написание логики взаимодействия с бизнес уровнем (Core) приложения на плечи программиста.

А еще мне в голову пришла следующая идея: оставить описания Resource Data Model в блоке types как есть (все таки из названия, RAML это REST API Modeling Language, а не Application Modeling Language :-) ), но при помощи специальных аннотаций делать ссылки каждой Resource модели на ее OWL/RDF класс. Таким образом мы сможем вынести описание Application Data Model за рамки RAML. Нечто похожее используется здесь api-platform.com, только без RAML: в yaml файле описывается структура приложения при помощи классов RDF/OWL, далее генерится API интерфейс и классы описывающие доменную модель сервера. По сгенереному API создается swagger спека.
Sign up to leave a comment.

Articles