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

如何向内容类型为text/html的响应体提供示例值(使用dredd进行测试)

祁博涛
2023-03-14

我有一个API调用,响应200 OK并返回超文本标记语言。我想把这个添加到我的API留档(特别是因为我使用dredd验证它,除非我为它提供预期的响应主体,否则测试会失败)。我在斯威格怎么做?

---更多详细信息---我对API调用的响应是200 OK,带有一行响应体:

我可以很容易地在蓝图中以以下形式定义响应体:

 + Response 302 (text/html; charset=utf-8)

     + Body

         `<html><body>You are being <a href="https://my.domain.com/users/sign_in">redirected</a>.</body></html>`

但我不知道如何大摇大摆地做到这一点。我能找到的几乎所有示例都是针对application/json响应的(可以理解),我很难猜测这种响应的正确语法。

我的文档中相关的昂首阔步的文本是这样的(到目前为止还没有指定响应体,所以使用空的响应体会失败,因为响应体应该是

# this is my API spec in YAML
swagger: '2.0'
info:
  title: My API (Swagger)
  description: blablabla
  version: "1.0.0"
# the domain of the service
host: my.domain.com
# array of all schemes that your API supports
schemes:
  - https
# will be prefixed to all paths
basePath: /
produces:
  - application/json; charset=utf-8
paths:
  /users/password:
    post:
      summary: Password Reset
      description: |
        Handles Reset password for existing user.
      consumes:
        - application/x-www-form-urlencoded
      produces:
        - text/html; charset=utf-8
      parameters:
        - name: "user[email]"
          description: email
          in: formData
          required: true
          type: string
          default: "user@gmail.com"
      tags:
        - Reset Password
      responses:
        200:
          description: Success

如果您对此有任何建议,请发表评论。谢谢!


共有2个答案

毕嘉
2023-03-14

如果有人在openapi 3.0版中需要此功能,您可以这样做:

  • 保存超文本标记语言。例如,在文件末尾给出这个:
components:
  schemas:
    error401:
      type: string
      example: '<html>HTML text</html>'
  • 然后你可以在任何你想要的响应中引用这个方案。例如:
  responses:
    '401':
      description: Error
      content:
        text/html:
          schema:
            $ref: '#/components/schemas/error401'
楮杰
2023-03-14

我明白了。响应对象有一个名为“examples”的字段,该字段允许向API响应显示示例。

语法在规范中清楚地显示出来,基本上说你需要为示例响应识别MIME类型,在我的例子中是text/html,值是实际的文本。

所以像这样:

    responses:
      200:
        description: success and returns some html text
        examples:
          text/html: 
            <html><body>Your HTML text</body></html>

就这样了。他们的文档指出,除了JSON之外的任何响应都被验证为纯文本,所以这应该可以工作。

希望这有帮助。

 类似资料:
  • 假设有人开发了RESTAPI,以json格式返回数据,但他没有将response设置为,而是。 现在我已经用REST Assured编写了测试: 但它不起作用。我注销了响应主体,这就是我得到的: 错误是: 在body标签之间有我期望的json,但是html标签是从哪里来的?当我在Postman或Paw甚至Web浏览器中测试api方法时,我无法看到它们的响应(因为它是带有网址参数的简单GET)。 我

  • 当调用rest模板获取以下异常时,有人能告诉如何解析html内容吗? restClientException:提取类型[class java.lang.Object]和内容类型[text/html;charset=UTF-8]的响应时出错;嵌套异常为org.springframework.http.converter.httpmessagenotreadableException:JSON分析错误

  • G-WAN4.3.11正在以“text/plain”类型返回我的所有csp文件。这怎么能修好?!目前,它只是一个静态文件服务器。 例如,//127.0.0.1:8080/?hello.py以“Hello,Python! ”(作为text/plain)响应 这应该返回“Hello,Python!”不显示 (以text/html形式)

  • 当我尝试向某个endpoint发送sparql查询时,例如: 我明白了 这不是唯一一个我无法向其发送查询的endpoint, 我应该怎么做才能在其他内容类型中获得结果?我试着用谷歌搜索它,但我发现如果我将查询发送到错误的html(不是sparqlendpoint),就会发生这种情况,但是http://data.open.ac.uk/sparql是一个好的endpoint,我通过python向它发送

  • 我在尝试获取gRPC API(使用C#)到blazor客户端时遇到了一个错误,一开始它工作得很好,但是在添加IdentityServer4并使用CORS for gRPC-Web之后,就像在文档中一样。下面是与错误相关的代码。 backend/startup.cs 后端/服务/用户服务.cs 前端/程序.cs 前端/Pages/Todolist.razor.cs 这是控制台的输出 这是尝试使用Id

  • 根据文档,响应自动作为JSON、XML或字符串对象提供,具体取决于响应内容。 在我的例子中,我的响应的内容类型为text/plain 这在我将字符串转换为响应,然后验证的地方工作(我已经逃过了所有的反斜杠) 这是失败的。当响应也可用作字符串时,为什么会失败 com.intuit.karate.exception.KarateExc0019:路径: $[*], 实际:["a. b. c匹配\"(\d