gpt4 book ai didi

java - 在 DTO 上配置 Swagger javax 验证约束

转载 作者:IT老高 更新时间:2023-10-28 21:20:21 26 4
gpt4 key购买 nike

我正在使用 Swagger (1.5.8)。我希望我的 swagger.json 定义检测 javax.validation JSR-303我的 DTO 上的注释,以便我可以记录我的 API 的验证约束。

我希望 @Min 注释 (like this example) 会显示一些关于最小值 (44) 的信息,但事实并非如此。

@POST
@ApiOperation(value = "post", httpMethod = "POST")
public Response post(
@QueryParam("id") @NotNull @Min(44) Integer id) {...}

生成的 swagger.json 是:

"/foo": {
"post": {
"operationId": "post",
...
"parameters": [
{
"in": "body",
"name": "id",
"description": "id",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
}
}

Swagger 有 closed the pull request for this functionality ,但我不清楚它在 Swagger 定义中的使用位置/方式。

我希望能够做以下事情:

FooController

@POST
public void postFoo(@Valid @RequestBody FooDTO fooDto) {...}

FooDTO

public class FooDTO {
@NotNull
@Size(min = 1, max = 100)
private Integer myInt;
}

所需/预期的 swagger.json 输出:

"FooDTO": {
"type": "object",
"required": [
"myInt"
],
"properties": {
"myInt": {
"type": "number",
"format": "integer",
"minimum": "1",
"maximum": "100",
...

配置 Swagger 模块/插件以启用 ModelResolver 等功能的首选方法是什么?和 BeanValidator ,以便他们检查我的 DTO 上的注释?

最佳答案

截至目前,最新的 Swagger-Core 版本 1.5.19 完美支持这一点:

类似这样的DTO对象:

public class SampleDTO {

@Min(value = 5)
@Max(value = 10)
@NotNull
private Integer integer;

@NotNull
private String string;

//...

}

会生成类似这样的swagger.json:

...

"definitions" : {
"SampleDTO" : {
"type" : "object",
"required" : [ "integer", "string" ],
"properties" : {
"integer" : {
"type" : "integer",
"format" : "int32",
"minimum" : 5,
"maximum" : 10
},
"string" : {
"type" : "string"
},

...

关于java - 在 DTO 上配置 Swagger javax 验证约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37145656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com