Swagger 如何定义标题参数';默认值在OpenAPI 3.0中

Swagger 如何定义标题参数';默认值在OpenAPI 3.0中,swagger,openapi,Swagger,Openapi,我有一个端点,它接受一个没有实体的PUT。put会在后端触发一个事件,我们的API设计团队认为put是该方法中最好的RESTful动词 问题是,当我们的Swagger render渲染.yaml文件时,它显示的示例cURL命令无法从命令提示符下运行。显然,curl不喜欢在没有正文的情况下执行PUT,除非它包含标题值:Content Length:0。当被呈现页面上的“执行”按钮调用时,该方法返回200-OK,但不是从生成的curl命令返回 如何在OpenAPI规范中添加默认值,以便在生成示例cu

我有一个端点,它接受一个没有实体的PUT。put会在后端触发一个事件,我们的API设计团队认为put是该方法中最好的RESTful动词

问题是,当我们的Swagger render渲染.yaml文件时,它显示的示例cURL命令无法从命令提示符下运行。显然,
curl
不喜欢在没有正文的情况下执行PUT,除非它包含标题值:
Content Length:0
。当被呈现页面上的“执行”按钮调用时,该方法返回
200-OK
,但不是从生成的curl命令返回

如何在OpenAPI规范中添加默认值,以便在生成示例curl命令时,Swagger渲染器将包含标题

下面是我们在.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方法定义一个参数,它将生成您想要的。 例如:


在您的示例中,它是不正确路径的一部分:

我考虑的更多是直接编辑yaml文件。我们的源代码并没有生成OpenAPI规范,我们遵循API第一设计方法,大摇大摆地进行设计。在编写代码时,我们使用OpenAPI规范作为“需求文档”。这样做有帮助吗?````````“/api/YourApiController:{”put:{”parameters:[{”in:“header”,“name:“Content Length”,“type:“string”,“default:“0”}],“responses:{”200:{“description:“Success”},},},“``我想我们谈论的是不同的技术。我很好奇如何标记
.yaml
文件,看起来你在为
.cs
文件提供建议。使用openapi标准的方式应该无关紧要。在json或yaml中,属性名称相同,只是符号不同。我从代码生成文档。我知道您使用它来记录您想要构建的api。我将编辑我的答案,使之更正确,并与你的问题保持一致。
[HttpPut]
public Task<ActionResult> Put([FromHeader(Name = "Content-Length")] string foo = "0")
{
     // execute anything here               
     return NoContent();
}
'/{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