Невозможно реализовать один API, который соответствует как REST, так и SOAP.
Тем не менее, можно создать систему, которая предоставляет RESTful API и SOAP API с эквивалентными функциями.
Для этого базовая реализация системы должна быть независимой от обоих API. Если, например, вы внедряете свою систему с Java, базовая реализация и каждый API должны быть в независимых пакетах. Если Python, независимые модули. И т.д.
В идеале, если бы у вас было бесконечное время, каждый API был бы полностью разработан, чтобы соответствовать базовым парадигмам их архитектурных стилей: RESTful API был бы должным образом ориентирован на ресурсы и передачи представлений их состояния, а SOAP API быть правильно ориентированными на процедуры, их параметры и возвращаемые значения.
Однако, чтобы сэкономить время, можно моделировать API-интерфейс SOAP после API-интерфейса REST, просто комбинируя имена ресурсов с методами HTTP. В результате получается своего рода гибрид REST-via-SOAP.
Например, если ваш REST API имеет ресурс с именем Mailboxes
, который поддерживает GET, POST, PUT и DELETE, а также принимает и возвращает представления типа application/json
, вы можете смоделировать ресурс и его методы, создав следующие методы SOAP:
get_mailboxes(url, options) returns jsonDoc
post_mailboxes(url, options, jsonDoc) returns jsonDoc
put_mailboxes(url, options, jsonDoc) returns jsonDoc
delete_mailboxes(url, options) returns nothing
Я прошу прощения, если мои записи неверны, я не так хорошо знаком с SOAP.