【问题标题】:How to accept a nullable Long in an API endpoint?如何在 API 端点中接受可为空的 Long?
【发布时间】:2020-06-27 23:46:00
【问题描述】:

基本上,我有以下用例:我有一个Entity,需要更新其中一个字段。该字段是Long,它可以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)
    {
        ...
    }

relativeId 总是 null 即使它不是 FE 上的 null。我以前从未处理过传递不是具有多个字段的对象的数据,所以我不确定在这里做什么。理想情况下,relativeId 可以只是一个路径参数,但很难通过那里传递空值。而且我想保持资源简单,所以我试图避免诸如故意传递-1,然后在BE 中接受它时将其设为null

【问题讨论】:

    标签: java reactjs api resources


    【解决方案1】:

    您使用@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}`
        });
    },
    

    【讨论】:

      猜你喜欢
      • 2019-09-11
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多