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

How to handle fields' values constraints on Google Cloud Endpoints and Java?

我来自 Spring 引导(使用 Jersey)来制作 API REST,如果我想从一个字段中获得一些值有任何约束,我可以很容易地处理,比如有一些最大值或不为 null图书馆 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 上的字段值?

谢谢!

对 REST API 调用执行由 javax.validation 注释表示的检查是 Spring 引导框架中实现的一项功能。

截至 2019 年 10 月,Java 的 Cloud Endpoints Frameworks 未实施 javax.validation 检查。此外,它不支持等效功能。您可以在 https://github.com/cloudendpoints/endpoints-java/issues

上提交功能请求