无法获取如何将字符串类型的引用与数组参数中的枚举值一起使用。我可以在items键中进行引用,并且它正在工作,但Swagger产生错误:不是有效的参数定义
Web UI生成界面,但它有文本区,而不是我期望的多选框。
正确的做法是什么?
我的代码:
swagger: '2.0':
paths:
/test:
get:
parameters:
- in: origin
name: status
description: Origin
required: false
schema:
type: array
items:
$ref: '#/definitions/Origin'
collectionFormat: pipes'
definitions:
Origin:
type: string
description: Campaign origin
enum:
- one
- two
externalDocs:
description: Find out more about Swagger
url: http://swagger.io
host: virtserver.swaggerhub.com
basePath: /
一种选择是定义一个参数并对其进行引用:(我在查询定义中使用reference ($ref:)时遇到了一个问题
paths:
/path:
get:
operationId: controllers.controller
parameters:
**- $ref: '#/parameters/SPEC'**
parameters:
SPEC:
包含$ref
项
的数组参数在 OpenAPI/Swagger 2.0 中不受支持。但看起来这在下一个版本 3.0 中是可能的。目前有几种解决方法,请参见下文。
您的规范还存在一些其他问题:
> < li>
in: origin
无效。< code>in关键字指定参数位置(路径、查询、头等。)并且根据OpenAPI/Swagger规范只接受某些值。我猜你指的是< code>in: query或< code>in: header。
打字(或复制粘贴错误?):swagger:“2.0”:
在末尾有一个额外的:
,而collectionFormat:pipes““
< br >让数组参数包含枚举值的一个解决方案是内联定义枚举:
parameters:
- in: query
name: status
description: Origin
required: false
type: array
collectionFormat: pipes
items:
type: string
enum:
- one
- two
另一种解决方案(可在此处找到)是使用YAML锚来引用枚举。这是YAML的一个特性,您可以在其中使用
标记键
definitions:
Origin:
type: string
description: Campaign origin
enum: &origin
- one
- two
paths:
/test:
get:
parameters:
- in: query
name: status
description: Origin
required: false
type: array
collectionFormat: pipes
items:
type: string
enum: *origin
我的Spring启动应用程序中的API具有类型的查询参数。从邮递员那里,它只接受字符串值。当作为查询参数值发送时,它会以400作为整数响应。如何配置Spring启动应用程序以接受Enum字符串值或Enum索引/序号值作为查询参数。 下面两种方法都应该有效 <代码> 我正在使用Java,spring boot fw。它在dotNet中运行良好
问题内容: 在阅读有效的Java时,我遇到了“使用枚举而不是常量”的建议。在当前项目中,我正在执行与以下类似的操作: 我将如何使用枚举来实现此目的?由于必须使用该接口,因此必须为索引使用。上面的例子只是一个例子。我实际上正在使用一个for索引值的API 。 问题答案: 将一种有用的模式与一种反模式一起应用通常会失败;-) 在您的情况下,如果要用值替换常量,则将数组用于非真正的类数组数据会带来问题。
我想使用中定义的枚举作为查询字符串中参数定义的一部分。 我在我的Swagger 2.0规范文件的< code>definitions部分定义了Swagger枚举。 我可以在其他定义中创建对它的引用: 当参数在:body中为中为
我想用:调用它。但它不喜欢:
我希望能够使用此枚举定义: ...然而,在参数定义内部,我不断得到错误: 错误: Swager错误:不是有效的参数定义