如何解决如何定义标头参数的默认值在OpenAPI 3.0中
我有一个端点,该端点可以接受没有主体的PUT。放置会导致后端触发一个事件,我们的API设计团队认为PUT是实现该方法的最佳RESTful动词。
问题是当Swagger渲染器渲染.yaml文件时,它显示的示例cURL命令无法从命令提示符下运行。显然,curl
不喜欢没有主体的PUT,除非它包含标头值:Content-Length: 0
。当该方法通过渲染页面上的“执行”按钮调用时返回200-OK
,但不是从生成的curl命令中返回。
如何在OpenAPI Spec中添加默认值,以便Swagger渲染器在生成示例curl命令时将标头包含在其中?
以下是.yaml文件中我们方法的示例:
'/{jobId}/start':
parameters:
- in: header
name: Content-Length
schema:
type: string
put:
summary: Starts processing job
tags:
- Actions
responses:
'200':
description: OK
description: Starts processing job
我尝试使用default
关键字,但是我的编辑器(Visual Studio代码)指示它不是有效的属性。而且我在OpenAPI规范中找不到任何有关如何默认头参数值的地方。
解决方法
如果使用fromheader装饰和正确的值定义put方法的参数,它将生成所需的内容。 示例:
[HttpPut]
public Task<ActionResult> Put([FromHeader(Name = "Content-Length")] string foo = "0")
{
// execute anything here
return NoContent();
}
编辑:
我的示例以您希望的方式生成openapi文档。与您的示例相比,我看到了些许差异。在我的示例中,参数是部分op de http操作(放置)。默认是架构的一部分。 在yaml中,其外观为:
'/{jobId}/start':
put:
summary: Starts processing job
tags:
- Actions
parameters:
- name: Content-Length
in: header
schema:
type: string
default: "0"
nullable: true
responses:
'200':
description: OK
description: Starts processing job
在您的示例中,它是路径的一部分,根据以下内容,该路径是错误的:https://swagger.io/docs/specification/paths-and-operations/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。