猿问

如何处理 Google Cloud Endpoints 和 Java 上的字段值约束?

我来自 Spring boot(带有 Jersey)来制作 REST API,如果我想要某个字段中的某些值有任何约束,比如有一些最大值或在 javax.validation 库中不为空,我可以轻松处理。


import javax.validation.Valid;

import javax.validation.constraints.NotNull;


...


@PUT

@Produces(MediaType.APPLICATION_JSON)

public Response gestionarVenta(@Valid @NotNull(message = CONSTRAINT_BODY_NOT_NULL) final ProductoCompradoDTO productoCompradoDTO) {

   ...

}

但是,我现在正在查看 Google Cloud Endpoints,并尝试使用同一个库,但它只是忽略它并继续执行该方法。


import javax.validation.Valid;

import javax.validation.constraints.NotNull;


@Api(name = "echo", version = "v1", namespace = @ApiNamespace(ownerDomain = "echo.example.com", ownerName = "echo.example.com", packagePath = "")

// ...

)

public class MyApi {

    @ApiMethod(name = "echo")

    public Message echo(@Valid @NotNull(message = "cant be null") Message message, @Named("n") @Nullable Integer n) {

        ...

    }

}

我正在发送一个空尸体。


为什么它会忽略它?是否有某种方法或库可以对 Google Cloud Endpoints 上的字段值施加约束?


谢谢!


慕尼黑8549860
浏览 60回答 1
1回答

慕容708150

对 REST API 调用执行由 javax.validation 注解表示的检查是 Spring Boot 框架中实现的一项功能。截至 2019 年 10 月,Cloud Endpoints Frameworks for Java 未实现 javax.validation 检查。此外,它不支持等效功能。
随时随地看视频慕课网APP

相关分类

Java
我要回答