Comments (7)
Oh interesting. Hm. I'm guessing you know you can return
a Response, but you want this just so you can short-circuit a route handler at any time?
We really need a middleware system in Mirage... this has come up a lot recently and will probably be added in the near term.
from discuss.
but you want this just so you can short-circuit a route handler at any time
exactly, yes
We really need a middleware system in Mirage
yeah, that would be another potential solution for this
from discuss.
I think I'm a little hesitant to merge this in, because it introduces some new "magic" (exceptions in route handlers return a 500, unless they happen to throw Responses), and in general I don't like using exceptions for program logic/control flow.
I think we should eventually introduce middleware pattern to deal with this.
For now, if you wanted to reuse this logic for your route handlers, I think your best bet might be to make a HOF:
this.get('/users', withAuth((schema, request) => {
});
You might also be able to use the application serializer's serialize
method to perform some checks / change the response before it goes out. But I agree we need a better story here.
from discuss.
yeah, the withAuth()
is pretty much exactly the workaround that I'm using right now. unfortunately though prettier
isn't exactly happy about it and transforms it into a multi-line statement...
from discuss.
sucks :/
I'd be happy to prioritize middleware, or even ship it behind a feature flag so we can test it out a bit
from discuss.
You might also be able to use the application serializer's serialize method to perform some checks / change the response before it goes out.
I just tried this out, but it seems like the serializer isn't used at all when I throw something in the route handler. Looking at the code, the this.serialize()
call is only done in the successful case, but not for the error case.
from discuss.
FYI: Transferred this to our Discuss repo, our new home for more open-ended conversations about Mirage!
If things become more concrete + actionable we can create a tracking issue in the main repo.
from discuss.
Related Issues (20)
- Add Middleware support to Mirage HOT 1
- Custom exception post-processing HOT 2
- Support multiple server instance. HOT 5
- Tracking issue for routing DSL / passthrough / namespace improvements
- Model hooks / default attributes HOT 5
- Passthrough external requests with wildcard HOT 4
- hasMany to hasMany (manyToMany) fixture associations not created HOT 1
- nativescript-vue with miragejs HOT 1
- Question: Expose mocked API as standalone on a specific port? HOT 3
- Be able to mock websocket calls HOT 2
- More array functions for models / collections HOT 8
- cannot use trait with afterCreate HOT 8
- routes for related resources HOT 2
- [Suggestion] Automatically parse request body based on content type HOT 2
- Feature Request: Generate API docs from test runs HOT 3
- How to only intercept request that defined in routes HOT 2
- server.createList() and server.create() creates duplicate values with dynamic factory definition
- Is it possible to use a combination of mock API's and actual API calls ? HOT 1
- Using a nested primary id for update and deletes
- Adding context object to handler to mock auth
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from discuss.