问题标签 [bravado]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
483 浏览

python - 在 swagger.yml 中指定“流式处理”响应以增量方式将数据发送到 bravado 客户端

我们实现了一个基于 Python 的 REST 服务,它通过Swagger指定端点。在客户端,我们使用bravado 库。这种组合适用于除一个端点之外的所有端点。该端点必须返回一个大型数据集,该数据集不能保存在内存中,必须流出。我想一次每行发送一条记录,如此处所述。根据规范,应该可以使用“文件”作为数据类型,但我找不到输入文件(即文件上传)的示例,也找不到下载文件的示例。

任何提示如何通过 Swagger 指定流输出以及如何通过虚张声势客户端检索它?

0 投票
0 回答
819 浏览

python - 使用 Swagger、Bravado 和 Python 3 访问 BitMEX Api

我正在尝试使用 Swagger 连接到 BitMEX。我已经编写了以下与 Bravado 的集成,但无论我做什么,我都会不断出错。

在禁用所有验证的情况下,这会引发以下错误:

我究竟做错了什么?

0 投票
2 回答
1973 浏览

ruby - 为 REST API 创建动态 Ruby OpenAPI/Swagger 客户端的助手

我使用Bravadopetstore的 REST API 创建了一个 Python 客户端。

我需要做同样的事情来获取 REST API 的动态 Ruby 客户端。

  • 我在OS 集成 Swagger 页面中看到了工具列表,但其中大多数似乎是使用 Swagger 自动化测试或创建 Swagger/openapi API,而不是创建使用 Swagger API 的客户端。

  • Svelte是上面列表中的“来自 Swagger JSON Spec 的动态 Ruby API 客户端”。它可能是一个很好的候选者,并且看起来类似于我已经使用的Bravado Python 库,但是:

    • 似乎请求参数验证仅针对基于 URL 的参数进行,因此它不会提供请求,并且针对 Swagger 2.0 规范的响应验证就像这里一样。
    • Svelte 返回 Faraday::Request 而不是模型实例。
  • Ruby gem OpenAPI是正式的 Ruby 包装器,这是我们正在寻找的,但目前还没有任何文档 Cf. 主要自述文件:“在活动开发中。文档即将推出”
  • Excon(感谢@kevin-burnett 指出)没有为 Swagger 描述的 API 提供自动包装器,它是一个 HTTP 客户端,对应于 Python 的Requests,因此是一个手动使用 API 的库。

这是我们在 Ruby 中寻找的那种特性的 Python 代码:

要获得简单的 dict 答案(不使用模型):

提供:

更好的是,默认情况下使用模型:

0 投票
1 回答
748 浏览

python - 变量名中的 Python 转义“$”字符

我正在使用 bravado,它为我创建了基于 swagger 定义调用的函数。swagger 定义包含以 . 为前缀的查询参数$。IEclient.pet.get_pets($limit=10)

问题是我不能用$limit=10,因为它会引发语法错误。

有没有办法在python中逃避这个?

0 投票
1 回答
1023 浏览

python - Requests / bravado 302 对 POST 的响应变成 GET (python)

当我在虚张声势(通过 request.session())中为 Web 服务编写处理程序时,我遇到了这个特殊性:

POST 请求在被重定向时会变成 GET 请求。导致我的 POST 被破坏,我无法让它工作。

编辑:实际的请求调用来自虚张声势,如下所述: 如何在 Bravado 中设置自定义 http 客户端?我需要设置额外的客户端证书。

因此,请求呼叫/会话本身被虚张声势所掩盖。

这个问题(请求的 post/get 转换)已经在其他线程中讨论过,根据规范考虑它,但仍然很奇怪。

最后,我只是侵入了 session.py 中以下部分的请求:

我根本没有改变得到的地方。

还有这里:

我注释掉的地方:

当然这是丑陋的黑客,但我应该怎么做?希望有人对此有指导。

0 投票
1 回答
284 浏览

python-3.x - 我可以包装一个 python 对象来捕获异常吗?

我想包装一个足够通用的对象以捕获所有方法的异常。

假设我有这个类:

我想包装对象以捕获异常,但不创建定义 CanThrowException 类中存在的所有方法的类。有没有办法在python中做到这一点?

我正在使用python bravado来解析 REST API 定义并在 API 上执行测试。在 API 的正常使用中,如果端点返回与 http 代码 2xx 不同的内容,则调用失败。这就是为什么 bravado 在这些情况下会引发异常。但就我而言,我在测试 API 时会导致这些错误,因此在这种情况下它们不是错误。

这就是为什么我想隔离 bravado 的使用,管理异常(按照 bravado 团队的建议)并返回我的测试需要知道的内容。

提前致谢!

0 投票
0 回答
110 浏览

python - sphinx autodoc 是否可以处理动态属性?

我正在使用 Bravado 为 OpenAPI 端点生成 API 客户端。我已经扩展了SwaggerClient处理一些分页问题。客户端覆盖__getattr__and __dir__,因此任何实例化的客户端都将提供属性映射到 swagger 规范包含的任何内容。

是否可以让 sphinx 为这些动态添加的属性生成文档?

0 投票
2 回答
460 浏览

python - 如何将授权标头添加到虚张声势创建的 API 客户端

我能够使用requests正确验证并从 API 接收响应的模块创建一个简单的 API 接口。但是,当我尝试使用虚张声势,从 swagger 文件创建客户端,并手动将授权令牌添加到头部时,它失败并显示:

我相信我正确地添加了授权标头。

我用来创建客户端的代码如下。如图所示,我尝试以两种方式添加授权令牌:

  • http_client设置中通过set_api_key
  • Swagger.from_url(...)步骤中添加request_headers.

然而,这两种选择都失败了。

我的问题是,如何正确地将授权标头添加到 bravado SwaggerClient?

0 投票
0 回答
29 浏览

python - 统一模拟与模拟对象的任何交互?

https://bravado.readthedocs.io/en/stable/testing.html演示了可以像这样模拟 OpenAPI 客户端的特定端点:

但是我如何模拟任何端点调用。例如:

这将允许我将 设置为response可以以统一方式控制响应的函数,并且我将对调用顺序有先验知识,因此我可以正确地注入正确的响应。这是可以做到的吗?