При разработке API я определяю модель UserGeo
, которая содержит два поля — domain
(массив строк) и country
(массив строк).
Пустой список []
следует использовать в теле запроса, если для domain
не указано значение. Но при определении свойства default
как []
генерируемый код Spring
не назначает пустой ArrayList‹›, также известный как []
.
Прикрепляю примеры кода:
Определение чванства:
definitions:
UserGeo:
type: "object"
properties:
country:
type: "array"
items:
type: "string"
domain:
type: "array"
items:
type: "string"
default: []
Это не устанавливает значение домена по умолчанию в пустой список, проверьте этот сгенерированный код Spring/Java:
.
.
public class Classification {
@JsonProperty("country")
@Valid
private List<String> country = null;
@JsonProperty("domain")
@Valid
private List<String> domain = null;
.
.
Принимая во внимание, что когда я определяю поле домена как required
, даже не определяя его по умолчанию, сгенерированный код назначает пустой список по умолчанию для поля domain
.
definitions:
UserGeo:
type: "object"
required:
- "domain"
properties:
country:
type: "array"
items:
type: "string"
domain:
type: "array"
items:
type: "string"
И, как уже упоминалось, сгенерированный код имеет пустой список, назначенный для домена.
public class UserGeo {
@JsonProperty("country")
@Valid
private List<String> country = null;
@JsonProperty("domain")
@Valid
private List<String> domain = new ArrayList<String>();
И проблема в том, что если для них требуется поле, я хочу пометить запрос как BadRequest, когда ключ недоступен, вместо того, чтобы назначать ему пустой массив.
Может ли кто-нибудь сказать мне, как заставить массив использовать значение по умолчанию []
без необходимости? и как я могу убедиться, что мой требуемый отмеченный элемент массива вызывает BadRequest вместо того, чтобы назначать свойство по умолчанию []
?