当前位置: 首页 > 知识库问答 >
问题:

OpenAPI:强制字段、可选字段和未指定字段的混合

阳英朗
2023-03-14

例如,endpoint/user

user_id: str, mandatory
timestamp_utc: timestamp, optional
..*accept_any_extra_fields**..

因此,如果有人将以下json发送到我的endpoint,endpoint应该接受它

{ "user_id": 1,
  "name": "Sam",
  "location": "USA"
}

但如果发送以下json,则失败,因为它不包含user_id

{ "name": "Sam",
  "location": "USA"
}

共有1个答案

袁泓
2023-03-14

您使用Java-Spring吗?我在Spring控制器中使用了注释方法中的Swagger,在java代码中,您可以以这种方式指定所需的params:

@ApiOperation(value = "Get user", notes = "Get a user by the given filters")
@GetMapping("v1/users")
public UserDTO getUsers(@ApiParam(value = "User id", required = true)
                        @RequestParam(value = "user_id", required = true) String userId,

                        @ApiParam(value = "Date", required = false)
                        @RequestParam(value = "timestamp_utc", required = false) 
                        @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime utc,

                        @ApiParam(value = "Some other", required = false)
                        @RequestParam(value = "some_other", required = false) String someOther){

             return service.getUser(userId, utc, someOther);
      }

注释@apiOperation用于描述Endpint。

注释@apiparam用于描述param特征,所需的属性用于通知这一点。

 类似资料:
  • 问题内容: 我有一个这样的类结构: 我的目标是调用get方法,然后检查它是否存在。如果存在,则返回该属性;如果不存在,则仅返回null。所以像这样: 当然,这不是正确的Java 8可选语法,但这就是我的“伪代码”。用Java 1行有什么办法实现这一点? 问题答案: 您正在描述的是方法: 如果值不存在,则可让您使用函数在内转换该值,如果不存在该值,则返回一个空值(可选)。 还要注意,您可以从映射函数

  • 我有以下请求json 我试图验证这个json,我的要求是,如果ParameterB存在,那么里面肯定会有一个列表shd存在,否则ParameterB是可选的。例如,如果ParameterB本身只是不存在,那么shd不是一个问题。 我正在寻找相同的java验证注释。我在key和value上使用了@NotNull,但不能决定在ParameterB上使用什么,因为它是list所在的数组 我在Parame

  • 问题内容: 与可选字段相比,应如何处理? 由于所有字段都是可选的,因此我无法根据响应json是否包含某些密钥来真正使我的网络请求失败,只需将其解析为null。 我正在使用的方法 例如,如果我有以下json: 而我的班级: 如果json不包含或不包含密钥,是否有任何选择会失败? 在许多情况下,您可能至少需要解析一些值,而其他值是可选的? 是否有任何模式或库可用于全局处理这种情况? 谢谢。 问题答案:

  • 从GraphQL/Node/Express/Types cript堆栈开始,我遇到了一个问题,即字段参数没有传递给解析器函数。我有两个查询: 用户列表: 和用户: 如果没有提供条件,函数默认显示所有用户。但是,请考虑以下查询和结果: 显然,userIsLocked没有在函数上传递fields参数。但是,以下工作: 当用户ID登录到对getById()的请求时,我在控制台中看到了“a4f1d968-

  • 我有以下ElasticSearch DSL查询 我希望在与字段匹配时提高得分,也希望在字段匹配时降低得分。 我试过很多事情,比如: 或 但不能让它工作。我也尝试过将should和must等结合起来,但并没有走得太远--甚至不值得分享。有没有一种简单的方法可以做到这一点,而不需要重新对我所有的文档进行重新德行/重新打分?使用ES查询(而不是ES-DSL)的答案也会很有帮助。

  • 通常情况,我们不需要获取数据表的所有字段内容,而是部分字段。那么使用语句如下: $Model->field('id,title')->select();