Обновление в Lagom через REST API

Я рассмотрел 2 примера использования Lagom для разработки системы микросервисной архитектуры, а именно «chirp» и «cargotracker», но ни один из них не показывает, как обновить существующую сущность.

Например, наличие следующего объекта с REST URI

Предложение { id content viewCount автор }

api/suggestion      with  Http Post      ----> add a new suggestion
api/suggestion/:id  with Http Get,       ---->read a suggestion
api/suggestion/:id  with Http Delete,   ---->remove a suggestion

Как насчет обновления?

1)api/suggestion/viewCount с помощью Http Put?

2)api/suggestion/:id с Http Put?

3) api/suggestion/:id с Http Post?

Есть некоторые недостатки вышеупомянутого 3 подхода

для 1), необходимо определить отдельный класс данных для каждого поля, в противном случае обновление непосредственно в объекте Suggestion приведет к «изменяемым изменениям», что противоречит принципу Lagom.

для 2) и 3), требуется глубокая копия старого состояния и обновление с измененными полями, в противном случае также вводятся «изменяемые изменения».

Есть ли другие варианты?

Спасибо


person Bond Chen    schedule 10.08.2016    source источник


Ответы (1)


Мы используем что-то вроде

api/suggestion/:id PUT     // for updating the entire resource
api/suggestion/:id/views   //for updating a portion of the resource

1) сервисы отображают запросы на команды. команда может просто содержать подмножество полей сущности. 2) и 3) вам нужно прочитать документы и дизайн CQRS. Архитектура в первую очередь предназначена для работы с высококонкурентными обновлениями изменяемого состояния.

person dres    schedule 22.03.2017