Как принять обнуляемый Long в конечной точке API? - PullRequest
2 голосов
/ 17 марта 2020

По сути, у меня есть следующий вариант использования: у меня есть Entity, и мне нужно обновить одно из его полей. Это поле Long, и оно CAN может быть null (в основном, когда я удаляю сущность, мне нужно null из этого поля). Мы будем называть это поле relativeId.

Мой ресурс React выглядит следующим образом:

updateEntityField(entityId, relativeId) {
  return req({
    method: 'PUT',
    url: `stuff/entities/${entityId}/relative`,
    data: relativeId,
  });
},

А мой ресурс Java выглядит следующим образом:

@ApiOperation("Updates an entity's relative id")
@PUT
@Path("/{id}/relative")
@Consumes(MediaType.APPLICATION_JSON)
public ApiResult<Arrest> updateRelativeId(
  @ApiParam(value = "Entity id", required = true) @PathParam("id") long entityId,
  @ApiParam(value = "relative id", required = true) @Nullable Long relativeId)
    {
        ...
    }

относительный идентификатор всегда null, даже если он не равен null в FE. Я никогда не имел дело с передачей данных, которые не были объектами с несколькими полями раньше, поэтому я не уверен, что здесь делать. В идеале relativeId может быть просто параметром пути, но через него трудно передавать нулевые значения. И я хочу, чтобы ресурс был простым, поэтому я стараюсь избегать таких вещей, как преднамеренное прохождение -1, а затем создание этого null, когда оно будет принято в BE.

1 Ответ

1 голос
/ 17 марта 2020

Вы используете аннотацию @QueryParam, чтобы прочитать это необязательное значение из параметра запроса запроса (также не рекомендуется обновлять Swagger ApiParam):

@ApiParam(value = "relative id", required = false) @QueryParam @Nullable Long relativeId)

Затем обновите код React, чтобы передать его как параметр запроса:

updateEntityField(entityId, relativeId) {
    return req({
        method: 'PUT',
        url: `stuff/entities/${entityId}/relative?relativeId=${relativeId}`
    });
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...