当前位置: 首页 > 知识库问答 >
问题:

Openapi3 和 CSV 响应(针对 Dredd)

阳英朗
2023-03-14

我用DREDD测试我的Api,因为它的规范(考虑到Dredd在Openapi3中编写的痛苦限制)。否 我有一个终结点,如果 Accept 标头设置如此,它将生成 CSV 数据。

    '/my-endpoint':
        summary: ...
        description: ...
        get:
 #          parameters:
 #              - 
 #                  in: header
 #                  name: Accept
 #                  description: "Response format: application/json or text/csv"
 #                  example: "text/csv"
            responses:
                '200':
                    description: ...
                    content:
                        text/csv:
                            schema:
                                type: string
                            example:
                                summary: 'csv table'
                                value: 'cell1, cell2'

当我用Dredd运行测试时,测试失败


expected: 
headers: 

body: 
[
  {
    "key": "summary",
    "value": "csv table"
  },
  {
    "key": "value",
    "value": "cell1, cell2"
  }
]
statusCode: 200

warn: API description parser warning in .../tmp/transformed.specs.yml: 'Parameter Object' 'name' in location 'header' should not be 'Accept', 'Content-Type' or 'Authorization'

我在这里和这里阅读:不允许名为“接受”,“内容类型”和“授权”的标头参数。要描述这些标头,请使用相应的 OpenAPI 关键字 - 但它们是什么?根据此页面和此页面,似乎足以指定给定类型的响应,但这显然不足以告诉Dredd生成这样的标头。

共有1个答案

邢杰
2023-03-14

您收到错误,因为示例键的值意味着是文本示例值。因此,在您的情况下,它被视为具有摘要属性的对象。

将您的定义更改为:

                    content:
                        text/csv:
                            schema:
                                type: string
                            example: 'cell1, cell2'

或者,如果您想提供示例的摘要/说明,请使用示例

                    content:
                        text/csv:
                            schema:
                                type: string
                            examples:
                                csv table:
                                    summary: A CSV table with 2 cells
                                    value: 'cell1, cell2'
 类似资料:
  • 虽然我已经与他们互动多年,但我对WSDL设计非常陌生。我有一个 WSDL,我正在尝试与 Camel 一起使用 我试图实现的是对SOAP客户端的自定义响应字符串,并将SOAP请求转换为JSON,并将其推送到websocketsendpoint。 我的WSDL模式在代码生成时生成响应类,但是响应似乎从来没有在调试器中被调用过。 此外,如果我删除Camel中的json转换器,整个soap请求将返回给SO

  • 我使用放心发送GET请求。Rest是“text/csv”类型,有没有办法使用Rest从csv文件中提取一个元素值 场景:我只想从下面的CSV响应中获得“颜色” 汽车;车轮;颜色;气囊阿尔托;4;红色;2 奔驰;4;蓝色;1 马球;4;白色;1 斯威夫特;4;红色;4

  • 问题内容: 正如我们所知,中 Elasticsearch 回报。但是,我需要从那些API。 我正在寻找与.Solr提供的功能类似的功能,Solr提供了使用它的功能,我们可以轻松地在中获得响应。 我如何实现此目标? 注意 : 我不希望只是将ElasticSearch集群的所有内容导出为csv格式。 我想要获得响应而不是json。 更新 我一直在尝试使用答案中@Val建议的方法。 以下是内容 以下是内

  • 我想返回一个临时重定向,使用AsyncACK。 下面的“工作”(因为没有错误),但似乎不是异步的(它一次处理一个请求)。 这应该工作吗?如果我明确需要像https://jersey.github.io/documentation/latest/async.html#d0e9895一样启动一个新线程,返回响应是什么样子的?

  • 我试图在我的Laravel项目中创建一个与OmniPay和Mollie的付款。我使用以下2个库: https://github.com/barryvdh/laravel-omnipay https://github.com/thephpleague/omnipay-mollie 我在代码中执行以下操作: 付款有效。付款完成后,他回到函数回退。但是我不知道在这个函数中放什么,如果($响应- 付款后我

  • 问题内容: 因此,我知道JavaFx在使用线程时更新GUI的方法称为Task,但是代码是否以相似的方式工作或存在任何差异。让我举一个例子: GUI之外的另一个作为线程运行的类 在实际的GUI中 Task是否以完全相同的方式工作?还是存在差异?如果存在差异,您将如何修改此代码以在JavaFx项目中工作? 问题答案: 您是否正在寻找JavaFX中的SwingUtil.invokeLater副本。如果是