REST - сохранение связанных объектов - PullRequest
0 голосов
/ 11 июля 2019

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

Какова лучшая практика разработки API для этого. Какой должна быть стратегия именования для этой проблемы?

То, что я сейчас делаю, это:

@ PostMapping ( "/ владелец регистрация / пользователей)

Я беру целые данные: пользователь, настоящие местные жители. Я создаю User by UserFacade в модуле user, а затем создаю связанные локальные объекты с LocalFacade в locals модуля

1 Ответ

0 голосов
/ 12 июля 2019

Из моего понимания я бы разработал

@PostMapping("/users")

и

@PostMapping("/locals")

где создаются объекты.

Если оба творения будут успешными, вы можете обновить user как

@PutMapping("/users/related-locals")

Конечно, вы также можете сделать

@PutMapping("/locals/related-users")

Если вам нужно создать user за одну операцию (напрямую подключив related-locals), вам потребуется

  • сначала создать local,
  • получить id или link вновь созданного local
  • создайте user и добавьте id или link под related-locals к нему в клиенте и POST it.

Это означает, что если по какой-то причине создание user завершится неудачно, в вашей базе данных будет висеть locals.

Другая возможность - Multipart . С Multipart вы можете иметь два разных объекта в одной и той же RequestBody.

@PostMapping("/users")

может принять такой составной запрос, в который включены user и locals. Ваша серверная реализация должна была бы тогда предположить, что эти locals отображаются на related-locals в user и создать их на стороне сервера и добавить их к user (id или link, как раньше ). В случае сбоя какой-либо операции вы можете откатить весь запрос и сохранить базу данных в чистоте.

...