2015-06-04 13 views
2

Я читал о микросервисах, и у меня есть некоторые сомнения относительно того, какие данные следует отправлять на теле, и каковы данные, которые должны быть заполнены на сервере (с помощью идентификатора).Какую информацию следует отправлять на теле?

Например, представьте, что у нас есть агентство недвижимости, а модели домена - это агент, клиент и дом. Представьте себе, что для агента, чтобы представить дело, он должен:

  • войдите в систему агентства с его счета
  • создать профиль клиента в системе
  • заполнить форму транзакции с
    • данных клиента
    • дом был продан
  • нажмите на представить (это представляет данные в службу продаж)

Теперь мой вопрос, если служба продаж требуют полей, как имя и фамилию клиента, контакты клиента, адрес дома и так далее, мы должны:

  • отправить все необходимые данные из браузера , или просто идентификатор дома и клиента, а сервис будет обрабатывать остальные?
  • если у нас есть ограничение в системе, в котором говорится, что «вы можете продавать дома только своим клиентам», как мы гарантируем в службе продаж, что этот агент продает дом своему клиенту (как я могу доверять данным что происходит из браузера)?

Заранее спасибо.

ответ

0

отправить все необходимые данные из браузера или просто идентификатор дома и клиента , и служба будет обрабатывать остальные?

Обычно, если дом и клиент не изменяются в этом запросе, просто отправьте их идентификаторы, например.

{ 
    sale: { 
    price: "100000.00", 
    houseID: 123, 
    clientID: 456 
    } 
} 

, если у нас есть ограничение в системе, которая говорит, что «вы можете продавать только дома свои клиент», как мы гарантируем в службе продаж, что этот агент продает дом своего клиента (как я могу доверять данным, поступающим из браузера)?

Ответ: Вы не можете доверять данным от клиента. Если вы получаете входящий запрос на продажу, вам необходимо проверить его на сервере. Обычно у вас есть guard clauses или предварительные фильтры для проверки любой операции против ограничений (наряду с другими вещами, такими как очистка данных и проверка прав пользователя).

+0

Привет, спасибо за ответ. Да, я согласен, отправка идентификаторов и проверка на стороне сервера - это то, что я обычно делаю, но поскольку это микросервис, я ставил под сомнение эту практику. Например, если этот запрос отправлен службе, ответственной за продажи, как я могу проверить, может ли этот агент совершать транзакции с этим клиентом?Я знаю о денормализации, чтобы иметь требуемые данные в каждом микросервисе, но я не понимаю, должен ли я использовать его для проверки этого вида проверки/авторизации. –

+0

Основной целью микросервисов является разделение проблем, поэтому по определению микросервисы должны вести себя как обычные службы и не должны магически давать особые привилегии входящим запросам. Даже если вы контролируете оба микросервиса, и даже если у вас нет (еще) других клиентов для получающего микросервиса, все равно необходимо выполнить стандартные процедуры авторизации и проверки, чтобы быть полностью автономными и независимо проверяемыми. – mahemoff

+1

Привет. Из того, что я понимаю, вы подразумеваете, что микросервис должен иметь возможность выполнять все необходимые валидации, так как в этом случае микросервис «продажи» должен иметь всю необходимую информацию о клиентах каждого агента. Еще раз спасибо за ваши материалы. –

 Смежные вопросы

  • Нет связанных вопросов^_^