Как сделать поле данных необязательным (необязательным) в JAX-RS? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть RESTapi, написанный с использованием Jersey Framework.Наряду с этим есть класс POJO.Теперь мне нужно, как сделать конкретное поле необязательным в моем POJO, чтобы API работал независимо от этого необязательного поля?Я хочу, чтобы API работал в обоих случаях, то есть

  1. , если я даю этот необязательный параметр, то также,
  2. , если я не даю, то он также должен работать.

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Java 8 Optional был в основном предназначен для возвращаемых значений из методов, а не для свойств данных классов Java (POJO), как описано в Optional в Java SE 8 :

Конечно, люди будут делать то, что они хотят. Но у нас было четкое намерение при добавлении этой функции, и это не должно быть общим цель Может быть или какой-то тип, как бы много людей хотели бы нас сделать это. Мы намеревались предоставить ограниченный механизм для библиотеки возвращаемые методы , где должен быть понятный способ представления «нет результата», и использование null для таких случаев в подавляющем большинстве случаев вызвать ошибки.

Ключевым моментом здесь является ориентация на использование в качестве типа возврата. Класс определенно не предназначен для использования в качестве свойства Java Bean. Свидетельством тому является то, что Optional не реализует Serializable, что обычно необходимо для широкого использования в качестве свойства объект.

[титры]: https://blog.joda.org/2014/11/optional-in-java-se-8.html

0 голосов
/ 27 марта 2019

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

Может использоваться для любого класса или метода получения:

@JsonInclude(Include.NON_NULL)

Если вы используете Джексона <2.x, используйте это: </p>

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

...