OpenAPI 规范:忽略查询参数的默认值
OpenAPI spec: default value of query param is ignored
我将 OpenAPI 3 规范中的一个参数描述为
review_requests:
get:
tags:
- dashboard
operationId: reviewRequests
parameters:
- name: page
in: query
default: 0
description: Page number
schema:
type: integer
responses:
200:
description: OK
编译后我发现 Java 代码中缺少默认值,参数实际上描述如下:
@Valid @RequestParam(value = "page", required = false) Integer page
而不是 0
如果 GET 请求中未提供参数,我会收到 null
。
据我了解应该是
@Valid @RequestParam(value = "page", required = false, defaultValue = "0") Integer page
是bug还是我做错了什么?
我终于找到了解决方案:在 OpenAPI 3.x 中,默认值必须在参数的 schema
中指定。换句话说,而不是
parameters:
- name: page
in: query
default: 0
description: Page number
schema:
type: integer
应该是
parameters:
- name: page
in: query
description: Page number
schema:
type: integer
default: 0
我将 OpenAPI 3 规范中的一个参数描述为
review_requests:
get:
tags:
- dashboard
operationId: reviewRequests
parameters:
- name: page
in: query
default: 0
description: Page number
schema:
type: integer
responses:
200:
description: OK
编译后我发现 Java 代码中缺少默认值,参数实际上描述如下:
@Valid @RequestParam(value = "page", required = false) Integer page
而不是 0
如果 GET 请求中未提供参数,我会收到 null
。
据我了解应该是
@Valid @RequestParam(value = "page", required = false, defaultValue = "0") Integer page
是bug还是我做错了什么?
我终于找到了解决方案:在 OpenAPI 3.x 中,默认值必须在参数的 schema
中指定。换句话说,而不是
parameters:
- name: page
in: query
default: 0
description: Page number
schema:
type: integer
应该是
parameters:
- name: page
in: query
description: Page number
schema:
type: integer
default: 0