Несколько GET Rest API в разных полях таблицы или One Rest API в DDD - PullRequest
0 голосов
/ 24 июня 2019

Я хотел предоставить функциональность клиентам из моего сервиса для получения данных на основе различных полей или иногда комбинации полей.Например.

getByA
getByB
getByC
getByAandB
getByAandC

В проектировании, управляемом доменом, при разработке GET API, что я должен делать из следующего 2:

  1. Должен ли я создать отдельный get api для всех таких функций Iхотел предоставить?
  2. Должен ли я создать один get API со всеми возможными get, используя все эти поля в параметре запроса.Например,

get? A =? & B =? & C =?

Какой из них лучший способ сделать это?Есть предложения по лучшей практике?

1 Ответ

3 голосов
/ 24 июня 2019

Существует промежуточный путь между использованием отдельных API GET для каждого из этих запросов и созданием одного API GET.

Вы можете использовать шаблон Спецификация для предоставления одного GET API, но преобразовать его в Domain Specification Object перед передачей его на уровень домена для запросов. Обычно вы выполняете это преобразование в вашем View Controller перед вызовом Application Service.

Мартин Фаулер и Эрик Эванс опубликовали большую статью об использовании спецификаций: https://martinfowler.com/apsupp/spec.pdf

Как отмечается в документе, Основная идея Спецификации состоит в том, чтобы отделить утверждение о том, как сопоставить кандидата, с объектом-кандидатом, с которым он сопоставляется.

Примечание:

  • С вами все в порядке, если вы используете этот шаблон для стороны запроса, как вы обрисовали в общих чертах в своем вопросе, и избегайте его повторного использования в различных контекстах. Например, НЕ используйте объект спецификации как на стороне запроса, так и на стороне команды, если вы используете (или планируете использовать) CQRS. Вы будете создавать центральную зависимость между двумя частями, которую НУЖНО хранить отдельно.
  • Спецификации удобны, когда вы хотите представить концепцию домена. Оцените ваши запросы (getByAandB и getByAandC), чтобы вытянуть вопрос, который вы задаете домену (например, попросите своего эксперта по домену описать данные, которые он пытается получить).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...