Как динамически избежать отправки ответа, содержащего все свойства из данных отношений - PullRequest
0 голосов
/ 23 февраля 2019

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

У меня есть ситуация, когда приложение позволяет пользователям регистрироваться и размещать заказы.При регистрации пользователя сервис должен иметь возможность отправлять ответ с информацией о пользователе, в том числе - имя пользователя, адрес электронной почты, номер контакта, адрес и т. Д.

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

В настоящее время происходит то, что, когда я ссылаюсь на существующий экземпляр пользователя в экземпляре Order, ответ Order имеет полный кортежИнформация о зарегистрированном пользователе.

В ответе на подтверждение заказа мне действительно не нужна вся информация о пользователе.

Однако, если для регистра пользователя используется ссылка на тот же объект Order, я хочу, чтобы служба включала все поля из объекта Order.

Я попытался сослаться на следующие ссылки -

Изменение Джексона JsonIgnore Динамически Как исключить поля с Джексоном, не использующим аннотации?

Однако решения, упомянутые здесь, всегда будут игнорировать атрибут в ответенезависимо от сценария, в котором на объект ссылаются.

Например - Ответ от службы заказа такой, как показано ниже.

{
    "id": "ORD-1000",
    "priority": null,
    "status": "Open",
    "customer": {
        "id": "1000",
        "name": "Avion Solutions",
        "email": "support-na@avionsolutions.com",
        "contact": null,
        "customerType": "gold-sx",
        "shipToContactId": null,
        "billToContactId": null
    },
    "urgency": null
}

В приведенном выше кортеже ответа, скажем, я просто хочуинформация о заказе с основной информацией о клиенте, такой как имя и адрес электронной почты.

И если клиент регистрируется, то ответ должен содержать всю информацию, как указано в приведенном выше кортеже.

Как я могудинамически игнорировать атрибуты в ответе службы REST на основе контекста, в котором находится объект сущностиИспользуется?

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

1 Ответ

0 голосов
/ 23 февраля 2019

Попробуйте использовать @JsonView аннотацию.Вы можете определить видимость для данного свойства и на REST Controller вы можете определить уровень, который вы хотите показать.Для получения дополнительной информации и примеров, пожалуйста, прочитайте ниже:

  1. Джексон JSON Views
  2. Джексон - Двунаправленные отношения
  3. Использование @JsonView с Spring MVC
...