express-resource
express-resource copied to clipboard
Add accepted type negotiation
Currently express-resource uses the :format
parameters for matching requested resource format (.xml
, .json
, etc).
In addition to this, it would be nice to support the HTTP Accept headers. connect-conneg provides a parser for them that organizes the requested formats by preference.
This can already be used with express-resource, but requires some boilerplate. First you need to add the conneg middleware:
server.use require('connect-conneg').acceptedTypes
And then handle the types in the default
content negotiation handler:
default: (req, res, next) ->
for type in req.acceptableTypes
if this.html and type is 'text/html'
return this.html req, res, next
if this.json and type is 'application/json'
return this.json req, res, next
next()
It would be very useful if the default implementation of default
did this, instead of falling back to 406
error.
express 3x will have all these https://github.com/visionmedia/express/blob/master/lib/request.js#L153 but yup I agree this would be nice to have
@visionmedia great! It would be good to support the new Express 3x feature (req.accepted
) and connect-conneg (req.acceptableTypes
).
Want a pull request?
yeah we could use that for now