gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:39 26 4
gpt4 key购买 nike

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

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

  • 我在 OS integrations Swagger page 中看到了一个工具列表但它们中的大多数似乎是使用 Swagger 自动化测试或创建 Swagger/openapi API,而不是创建使用 Swagger API 的客户端。

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

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

这是我们在 Ruby 中寻找的 Python 代码:

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

from bravado.client import SwaggerClient
from bravado.fido_client import FidoClient

client = SwaggerClient.from_url(
'http://petstore.swagger.io/v2/swagger.json',
config={'use_models': False}
)

result = client.pet.getPetById(petId=42).result(timeout=4)

提供:

>>> result
{'category': {'id': 42, 'name': 'string'},
'id': 42,
'name': 'doggie',
'photoUrls': ['string', 'string2'],
'status': 'available',
'tags': [{'id': 42, 'name': 'string'}]}

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

> from bravado.client import SwaggerClient

> client = SwaggerClient.from_url("http://petstore.swagger.io/v2/swagger.json")
> pet = client.pet.getPetById(petId=42).result()
> print(pet)
Pet(category=Category(id=42, name='string'), id=42,
name='doggie', photoUrls=['string', 'string2'],
status='available',
tags=[Tag(id=42, name='string')])
>

最佳答案

您可以使用 ruby-swagger将 swagger.json 转换为 API 客户端

你可以看看这个命令:

 rake swagger:generate_client:ruby

你也可以看看swagger-codegen

关于ruby - 为 REST API 创建动态 Ruby OpenAPI/Swagger 客户端的助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43698634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com