【发布时间】:2021-10-29 20:07:57
【问题描述】:
我有一个 spring(启动)服务器,并希望使用 springdoc 从注释中生成 openapi 规范。
我在请求正文中有一个带有两个参数的请求。我希望第一个是必需的,第二个是可选的
@RequestBody(required = {true|false}) 似乎只将正文中的所有参数设置为(不是)必需的。
另一方面,@Parameter 的 Javadoc 说要使用 io.swagger.v3.oas.annotations.parameters.RequestBody
这是我的代码,我希望生成一个规范,其中第一个参数是必需的,第二个是可选的:
@GetMapping("/fstVector")
public ResponseEntity<Vector> fstV(@RequestBody final Vector v1, @RequestBody(required = false) final Vector v2) {
return new ResponseEntity<>(v1, HttpStatus.OK);
}
@PostMapping("/fstVector")
public ResponseEntity<Vector> fstVPost(@RequestBody(required = true) final Vector v1, @RequestBody(required = false) final Vector v2) {
return new ResponseEntity<>(v1, HttpStatus.OK);
}
生成的规范需要两个参数:
/pond/fstVector:
get:
tags:
- circle-escape-controller
operationId: fstV
parameters:
- name: v1
in: query
required: true
schema:
$ref: '#/components/schemas/Vector'
- name: v2
in: query
required: true
schema:
$ref: '#/components/schemas/Vector'
responses:
"200":
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/Vector'
post:
tags:
- circle-escape-controller
operationId: fstVPost
requestBody:
content:
application/json:
schema:
type: object
properties:
v1:
$ref: '#/components/schemas/Vector'
v2:
$ref: '#/components/schemas/Vector'
required: true
responses:
"200":
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/Vector'
我怎样才能只要求所有四种请求类型的特定参数?
【问题讨论】:
-
理想情况下,GET 请求不应采用请求正文(除非您真的想发送大对象),并且 POST 请求不应返回
OK -
什么是“所有四种请求类型”?
-
@ognjenkl 获取、放置、发布、删除
-
@peer DELETE 如何适应“第一个是必需的,第二个是可选的”?
标签: spring-boot openapi springdoc springdoc-openapi-ui