如何在swagger/yaml文档上正确记录text/csv响应?

mbyulnm0  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(107)

我有一堆API端点,它们在响应中返回text/csv内容。我该如何记录这一点?以下是我目前拥有的:

/my_endpoint:
    get:
      description: Returns CSV content
      parameters:
        - $ref: '#/components/parameters/myParemeters'
      responses:
        200:
          headers:
            $ref: '#/components/headers/myHeaders'
          content: text/csv

就目前而言,这不起作用,我在Swagger预览中得到了说明:
无法呈现此组件,请参阅控制台。
问题是如何正确显示csv响应的内容?我发现如果我确实添加了一个模式,就可以工作了,类似于这样:

...
  content:
      text/csv:
        schema:
          type: array
          items:
            type: string
...

但是不应该有模式,因为它是csv。回到刚才的问题,描述csv响应内容的正确方法是什么?

cwdobuhd

cwdobuhd1#

第一个示例的语法无效。替换为:

responses:
        '200':
          content:
            text/csv: {}  # <-----

          # Also note the correct syntax for referencing response headers:
          headers:
            Http-Header-Name:  # e.g. X-RateLimit-Remaining
              $ref: '#/components/headers/myHeader'

components:
  headers:
    myHeader:
      description: Description of this response header
      schema:
        type: string

至于你的第二个例子,OpenAPI规范没有提供CSV响应的例子。所以schema可以是type: string,或者一个字符串数组,或者一个空的模式{}(这意味着“任何值”),或者其他东西。实际支持的语法可能依赖于工具。请随意在OpenAPI Specification repository中要求澄清。

7uhlpewt

7uhlpewt2#

这是openapi 3.0.2从后端返回text/csv内容(字符串)的另一个工作:
合同:

responses:
            '200':
                content:
                    text/csv:
                        schema:
                            type: string

后端:

return ResponseEntity.ok("h1,h2,h3,h4\n1,2,3,4\n5,6,7,8");
2j4z5cfb

2j4z5cfb3#

下面是另一个例子:
合同:

responses:
    '200':
      schema:
        type: object

后端:

return ResponseEntity.status(200).contentType(MediaType.parseMediaType("text/csv")).body("Col 1;Col2\naaa;bbb\nccc;ddd");
oipij1gg

oipij1gg4#

试试这个--它应该可以让你用csv而不是json来记录一个例子。

responses:
    '200':
      description: 'Some data in csv format'
      content:
        text/csv:
          schema:
            type: string
          example: |-
            name, country, column etc
            Alice, UK, blah
            Bob, France, whatever

相关问题