I used Bravado to create a Python client to a REST API for the petstore .
I need to do the same to get a dynamic Ruby client to the REST API.
I saw a list of tools in the OS integrations Swagger page but most of them seems to be to automate tests using Swagger or to create a Swagger/openapi API, not to create Client that consume a Swagger API.
Svelte , is a "Dynamic Ruby API Client from Swagger JSON Spec" in the above list. It could be a good candidate, and looks similar to the Bravado Python lib I already use, but:
Here is code in Python that is the kind of feature we are looking for in Ruby:
To get simple dict answer (without using models):
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)
provide:
>>> result
{'category': {'id': 42, 'name': 'string'},
'id': 42,
'name': 'doggie',
'photoUrls': ['string', 'string2'],
'status': 'available',
'tags': [{'id': 42, 'name': 'string'}]}
And even better, by default using the model:
> 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')])
>
There are lots of others , but excon is pretty sweet.
Include it in your Gemfile:
gem 'excon'
Then, to to do a GET request, for example:
require 'json'
require 'excon'
excon_result = Excon.get('http://petstore.swagger.io/v2/pet/findByStatus?status=pending')
response_body_as_string = excon_result.body
pets = JSON.parse(response_body_as_string)
pets.first['name'] # "hello kity with form updated" (sic)
Excon has lots of neat features such as the expects
option that allows you to specify a list of http status codes that you expect. If the response is outside of the expectation, it will raise automatically.
You can use ruby-swagger to convert swagger.json to API client
You can look at this command:
rake swagger:generate_client:ruby
Also you can look at swagger-codegen
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.