Swagger错误显示需要在路径或操作级别定义参数

insrf1ej  于 2023-04-30  发布在  其他
关注(0)|答案(3)|浏览(146)

我得到下面的错误:
声明的路径参数“imageId”需要定义为路径或操作级别的路径参数
这是我的狂妄自大定义的快照

'/api/v1/images/{unitnumber}/{type}/{imageId}':
        delete:
          tags:
            - Images
          summary: 'Summary'
          description: "Description"
          operationId: DeleteImage
          consumes: []
          produces:
            - application/json
          parameters:
            - name: unitnumber
              in: path
              required: true
              type: string
            - name: type
              in: path
              required: true
              type: string
            - name: imageId
              in: query
              required: false
              type: string
          responses:
            '400':
              description: Bad Request
              schema:
                $ref: '#/definitions/ErrorResponse'
            '401':
              description: Unauthorized
              schema:
                type: string
            '500':
              description: Server Error
              schema:
                $ref: '#/definitions/ErrorResponse'

我只能摆脱错误,如果我采取imageId并更改为path而不是query,这不是意图

- name: imageId
                  in: path
                  required: true
                  type: string

你知道我需要改变什么才能让这一切正常吗?

sgtfey8w

sgtfey8w1#

路径字符串/api/v1/images/{unitnumber}/{type}/{imageId}意味着imageId是一个路径参数,因此它必须是in: path
如果imageId应该是一个查询参数,如/api/v1/images/{unitnumber}/{type}?imageId=...,则需要将路径字符串更改为/api/v1/images/{unitnumber}/{type}。查询参数should not be mentioned in paths,它们仅在parameters部分中定义。

gijlo24d

gijlo24d2#

必须使用问号声明查询参数,如下所示:

/api/v1/images/{unitnumber}/{type}/{?imageId}
hi3rlvi2

hi3rlvi23#

(The问题的上下文不清楚,所以:)
如果您使用OpenAPI并在C#上下文中:

[OpenApiParameter("imageId", In = ParameterLocation.Path, Required = true, Type = typeof(string), Description = "The image identifier")]

该错误发生在某些使用OpenAPI的管道中。将代码片段放在Azure Function/ Endpoint / Controller上方,错误应该会得到修复。

相关问题