Comments (6)
Oh, so the extra 400 response is related to using a browser for an API that wants to give a JSON response. Still doesn't make a lot of sense to me though.
from goliath.
If the browser is chrome, the second request is for favicon.ico usually.
from goliath.
Exceptions are caught and handled by the API. The problem being, if you throw an exception inside the API it will end up in no-where land unless it's caught. The middlewares would have already returned at that point and the ASYNC_CALLBACK has to be used. So, we catch the exception, turn it into a 400 response, and fire the ASYNC_CALLBACKS.
We could possibly also stuff the exception into rack.exception so you can still access it if desired. Then, if you want, you can change the response in your async middleware for exceptions.
Would that work for you?
from goliath.
Yes, I need access to the original exception, so rack.exception would be good. The other issue is the use of a 400 error code, which indicates a client error. In this case it should be a 500.
from goliath.
K, feel free to move it to a 500 from a 400 and add in rack.exception.
from goliath.
pull request in #51
from goliath.
Related Issues (20)
- Does coerce still work?
- Validation Errors for Required Params are not a valid format HOT 4
- require grape slow down app HOT 5
- What's the purpose of Goliath.run_app_on_exit = true ? HOT 3
- Error after adding goliath to my Gemfile. HOT 4
- Getting issues in app due to lock/ compatibility between ruby 2.0.0 and goliath 1.0.3 HOT 2
- EM dependency too permissive HOT 9
- 1.0.5 release HOT 14
- Please join us in implementing Websockets for Rack HOT 1
- Store env in thread-local variable HOT 1
- Goliath JSON middleware incompatible with JSONAPI HOT 2
- Params middleware only parses params for `application/json` HOT 1
- How to stream content through a Goliath app? HOT 7
- Accessing the EventMachine connection? HOT 5
- Change message "An error happened"
- Sending response before all request data was received HOT 1
- Rack 2.x
- HTTP Request Smuggling Hardening
- Security Notice & Bug Bounty - HTTP Request Smuggling - huntr.dev HOT 1
- How to set allowed duplicated headers in Http Response HOT 2
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 goliath.