Мы собираемся создать некоторые RESTful-сервисы, которые по сути станут переходом к некоторым устаревшим веб-сервисам на основе SOAP. Сервисы SOAP более обобщены и будут использоваться во всей нашей организации (по крайней мере, таков план). Услуги RESTful предназначены для конкретных клиентов. Это решение уже принято и, к сожалению, я не могу его изменить ...
Мы боремся с тем, как структурировать наши ресурсы RESTful так, чтобы это имело смысл, следовало бы рекомендациям REST и вызывало эти службы SOAP, не причиняя себе слишком большой боли.
У нас есть некоторая свобода в отношении уровня детализации для серверных служб, но общее мнение таково: держите их в общих чертах и не приспосабливайте их к потребностям конкретного клиента.
Это приводит к некоторым интересным проблемам. Например, как обращаться с дочерними ресурсами родителя. Типичный пример, с которым мы работали: клиент с дочерним адресом.
У нас есть внутренний SOAP-сервис, который обновляет клиента как единое целое. Однако клиенту служб REST может потребоваться обновить только адрес для выставления счетов. Как нам лучше всего обрабатывать последующие обновления дочернего ресурса?
Должны ли мы делать обновления на «родительском» уровне (клиент) или предоставлять более детальную REST-операцию, которая обрабатывает адрес как ресурс и обновляет его таким образом? Последнее кажется правильным, ОТЛИЧНЫМ способом. Но если мы сделаем это, мы, по сути, будем вызывать грубую серверную службу только для одного фрагмента обновления. Кажется, не имеет смысла, поскольку это довольно тяжелый вызов.
Мы также немного боремся с тем, как соотнести ресурсы RESTful с нашей внутренней моделью домена. Мы могли бы заботиться о ресурсе RESTful как об одном объекте, но в нашем домене на внутреннем сервере это может быть множество различных объектов. Сейчас у нас есть относительно простая таблица БД, чтобы справиться с этим, но я не уверен, что она будет масштабироваться, когда мы сопоставляем все больше и больше ресурсов с объектами домена.
Это всего лишь пара примеров того, что мы поражаем ... Мне интересно, сталкивался ли кто-нибудь с подобными проблемами и имел ли какие-либо слова совета или мог бы указать мне на некоторые статьи, которые могли бы иметь некоторые лучшие практики.
Кажется, что это не необычная проблема, и она станет более актуальной, так как все больше и больше приложений используют архитектуры RESTful, но я не могу найти какую-либо другую информацию о ней.
Большое спасибо!