Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Record API requests like VCR #2350

Open
eccegordo opened this issue Feb 9, 2022 · 4 comments
Open

Record API requests like VCR #2350

eccegordo opened this issue Feb 9, 2022 · 4 comments

Comments

@eccegordo
Copy link

eccegordo commented Feb 9, 2022

Feature request

Would it be possible to add a mechanism to quickly "record" API payloads to local JSON files?

In other words something like passthrough but with a flag to capture the API result and persist to a local log file that Mirage would understand and use if I turned passthrough mode off. Bonus points if it could dynamically build out scenario stubs that are route aware. Then end goal being where I could wire up some routes to an existing API using fetch and click around the app a bit, review the saved JSON, and take the development back offline, tweaking the "recorded" JSON as needed to make my mocks more flexible or dynamic.

Extra bonus points if there was some sort of integration with Postman collections.

@SergeAstapov
Copy link
Collaborator

TL;DR I would be hesitant to add such functionality to this addon

As most of the mirage functionality was extracted from this add-on and moved to more generalized https://github.com/miragejs/miragejs we try to keep this repo focused on glue code that would help Ember users.

Today in modern Ember app you may even not need ember-cli-mirage and simply import miragejs via ember-auto-import, I would say such feature request better suit miragejs itself.

If sounds like nock can be used to achieve such behavior but in my opinion it should be some sort of an add-on to the ember-cli-mirage which would:

  • uses nock to write to file responses that pretender handles
  • uses nock to read intercepted responses and uses pretender to provide the response

This approach overall sounds opposite of what mirage is doing: providing mock server for development and generating responses on-the-fly based on the server config.

Wonder what other maintainers think and may have other suggestions.

@eccegordo
Copy link
Author

Thanks for the tip about nock.

Yeah you are right this is really a question for miragejs and not the addon. Although perhaps a case could be made for Ember specific behavior (e.g. functionality that works well for Ember conventions)

My main goal is I am working on an app with an established API. And looking for a way to speed up the development. The challenge is that I currently don't have much control over the API itself so doing stuff like making it JSON API compliant are not feasible. But rather than spending a lot of time manually crafting the mirage scenarios I would like to just use captured JSON within mirage (make the API work offline and locally). And extract out parts as I develop the mock server. Basically a mock server "derived" from a real API service is what I am trying to figure out.

Anyway, feel to close this issue if not appropriate to the scope of this addon.

@SergeAstapov
Copy link
Collaborator

@eccegordo are you using proxy on your local during development? You may just plug in nock and use it instead of miragejs for capture/replay

@eccegordo
Copy link
Author

I am using some special config in my ember app to with a HOST_URL value for the development environment and in most cases using Fetch inside my route hooks to hit the live API when working on Ember in development mode. I use the mirage passthrough. But reality is I don't have too much going on with mirage. And I am developing against the live API for the most part.

But no proxy directly, AFAICT.

Will explore the nock library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants