Я не думаю, что это возможно автоматически, по крайней мере, не без ИИ.
Прежде всего вам нужно разделить каждое название операции на две части: ресурс с IRI и VERB.
Например:
GetLastTradePrice
будет по крайней мере GET /lastTradePrice
или с последующим преобразованием GET tradePrices/last
Hello
будет GET /greeting?name="{name}"
CreateUser
, GetUserName
, DeleteUserById
будет POST /users
, GET /users/{id}?fields="name"
, DELETE /users/{id}
Если вы хотите иметь хорошие IRI для отладки вашего маршрутизатора и ссылки на сервер-сервер-строитель, то для этого вам нужна строгая концепция или AI. Если нет, то вам повезло, что структура IRI не имеет особого значения, поэтому вы можете использовать /resources/{id}
для каждого ресурса. Например, /users
может быть /resources/static:1
и /users/123
может быть /resources/123
. Если каждый ресурс имеет уникальный идентификатор в вашей системе. Если нет, то вам нужно использовать уникальные подкатегории, например /resources/avz5ag6u:123
. Без искусственного интеллекта, или какой-либо строгой концепции именования в вашей службе SOAP, вы не сможете повторно использовать IRIs как /users
по POST
, GET
или /users/{id}
по PUT
, GET
, DELETE
, но это не трагедия, поскольку покоем каждый ресурс может имеют несколько ИРИ. Просто имейте в виду, что они уникальны ...
Проблема со смысловой частью этих ссылок (VERB + IRI). С помощью REST вы просматриваете метаданные, относящиеся к ссылкам, например IANA link relations с vendor specific MIME types по HAL или rdf:Property
, описанным заказчиком RDF vocab на Hydra (если речь идет о REST JSON ofc). Я думаю, что можно создать параметр валидации/описания параметра и возвращаемого значения из XSD
, который у вас есть в вашем файле WSDL
, но вам будет сложно найти метаданные ссылок. Для этого вам понадобится ИИ. Если вам повезло, ваш SOAP-сервис уже предоставляет некоторую информацию RDF, такой сервис, я думаю, что автоматическое сопоставление возможно, иначе я так не думаю, и в любом случае это будет тяжелая работа. Вы не сможете отлаживать или улучшать сгенерированную услугу, потому что в маршрутах будут использоваться анонимные IRI или шаблоны IRI.
Так что в большинстве случаев это невозможно сделать полностью автоматическим. Для вашего SOAP-сервиса вам понадобятся строгие концепции именования операций и/или уже существующие описания RDF. Думаю, даже с этим сложно написать генератор службы REST. Без этого вам нужно выполнить некоторую или более ручную работу, например, аннотировать вашу SOAP-службу с конкретными вещами REST или записать некоторые специфические атрибуты REST в ваш файл WSDL и использовать их для создания службы REST. Теперь это одна часть работы.
Другая часть - это повторное использование бизнес-логики вашего SOAP-сервиса.Если у вас есть центрированный макет, такой как чистые, луковые или шестиугольные/порты &, то его легко добавить новый адаптер для доставки или порта REST. Если вы не используете такую архитектуру, вам необходимо вручную написать всю службу REST или адаптер REST класса Бога.
На мой взгляд, создание генератора SOAP -> REST не стоит усилий. Легче написать службу REST вручную.