В RESTful API должны ли ресурсы быть непосредственно связаны с моделями доменов? - PullRequest
0 голосов
/ 04 июня 2019

Предположим, у меня есть пользовательский ресурс в базе данных, и он содержит список адресов, в которых он находится.

GET /users -> Returns list of users
[
  {
    "name":"Rick",
    "email":"abc@example.com,
    "addresses":[
      "home" : {
                  ....  
                },
      "work" : {
                  ...
               }
    ]
  }
]

Здесь адреса являются частью ресурса пользователя. Теперь при разработке api для CRUD по адресам нижеприведенная структура выглядит хорошо.

GET /users/{user-id}/addresses
POST /users/{user-id}/addresses

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

Должны ли ресурсы быть непосредственно связаны с моделями доменов? или выше дизайн уместен?

1 Ответ

1 голос
/ 04 июня 2019

Должны ли ресурсы быть непосредственно связаны с моделями доменов?

Нет. На самом деле, утверждалось, что они не должны быть.

Ваша модель данных - это не ваша объектная модель, это не ваша модель ресурсов, а не ваша модель обеспечения. - Амундсен, 2016 .

Итак, GET / users / {user-id} / address POST / users / {user-id} / address действителен?

Не ясно, какой вопрос вы задаете.

Имеете ресурс, который возвращает представления коллекции адресов для пользователя? Конечно, в этом нет ничего плохого. Вы можете подумать над некоторыми последствиями кэширования - что происходит с кэшированными представлениями /users/{user-id}, когда кто-то публикует изменение в /users/{user-id}/addresses? - и сделайте компромиссы подходящими для вашей ситуации.

Эти идентификаторы подходят для ресурса? Конечно, но вы можете представить и другие. REST не заботится о том, какое правописание вы используете, если вы соблюдаете соответствующий стандарт (в случае URI: RFC 3986).

...