Add fetch_link to make it much easier to follow linked URLs within an API #357
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an attempt at answering the question I had in #352
By simply adding
x-operationId: [linkedOperation]
in your spec to URLs that are returned from the API that are internal links, and addingadd_fetch_link: True
to your config, those URLs will be returned in the model asFetchLink
objects that can be called to retrieve the named `[linkedOperation]' on the given URL (e.g. obtain the http_request on that url and operationId, as if a CallableOperation had been called).I think this is fairly straightforward. The only item I question is how I added the backref to
swagger_spec._client
, mainly so I could access my new SwaggerClient._get_operation from the context of http_future where it seems I only had access to the operation and spec. If there was some other way around this, please let me know. Alternatively _get_operation could be added to bravado-core instead I suppose. I just felt it was similar in vein to _get_resource that is in this module.Without the new config option, there is no changed default behaviors.
I suppose I need to add some tests for this to be accepted, but figured I'd throw it out here to get some feedback.