jeremydaly / lambda-api

Lightweight web framework for your serverless applications
https://serverless-api.com
MIT License
1.42k stars 126 forks source link

feature - add Allow HTTP header to response for status code 405 #186

Open bschwarz opened 3 years ago

bschwarz commented 3 years ago

When lambda-api can not find a method for a path, it automatically sends back a HTTP 405 Method Not Allowed error, via MethodError. Per the HTTP rfc 7231, the Allow header must be sent back with the 405 response. I purpose adding this to lambda-api. I believe it can introspect and get the allowed methods, correct?

Thanks!

bschwarz commented 3 years ago

I can try to create a patch for this, if you just can point me in the right direction.

bschwarz commented 3 years ago

All I did was add the following line to requests.js, line 247:

this.app._headers.allow = Object.keys(routes['METHODS']).join(',') || ''

So the whole else block looks like this now:

this.app._errorStatus = 405
this.app._headers.allow = Object.keys(routes['METHODS']).join(',') || ''
throw new MethodError('Method not allowed',this.method,'/'+path.join('/'))

I am not sure if that's the best approach or not. I can whip up a patch file, or do a pull request if that is more convenient for you.