-
Notifications
You must be signed in to change notification settings - Fork 467
fix(event_handler): return 415 status_code for unsupported content-type headers #7980
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
base: develop
Are you sure you want to change the base?
fix(event_handler): return 415 status_code for unsupported content-type headers #7980
Conversation
…return a 415 response
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #7980 +/- ##
========================================
Coverage 96.72% 96.73%
========================================
Files 278 278
Lines 13630 13640 +10
Branches 1084 1086 +2
========================================
+ Hits 13184 13194 +10
Misses 327 327
Partials 119 119 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
leandrodamascena
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR! I think returning 415 is the correct behavior for unsupported content types - the previous 500 was an intentional design decision at the time, but this is a better approach. For most customers this won't break anything. However, anyone asserting status_code == 500 in their tests for this specific scenario, or monitoring/alerting on 500s from unsupported content types, will see a change in behavior. We'll keep an eye on customer feedback and revert if needed.
I left a minor suggestion on the exception hierarchy - I'll merge once you've had a chance to review it.
leandrodamascena
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR! I think returning 415 is the correct behavior for unsupported content types - the previous 500 was an intentional design decision at the time, but this is a better approach. For most customers this won't break anything. However, anyone asserting status_code == 500 in their tests for this specific scenario, or monitoring/alerting on 500s from unsupported content types, will see a change in behavior. We'll keep an eye on customer feedback and revert if needed.
I left a minor suggestion on the exception hierarchy - I'll merge once you've had a chance to review it.
…ub.com:chriselion/powertools-lambda-python into celion/return-415-for-unsupported-content-type
|
Mypy is reporting an error that is unrelated to this PR. Let me check it. |
|



Issue number: closes #7978
Summary
For handlers with a body parameter, previously we would raise an uncaught NotImplementedError, which results in a 500 response.
Now, raise a new subclass of
NotImplementedError(to maintain existing behavior), and handle the new exception and return a 415 (Unsupported Media Type) response.Changes
RequestUnsupportedContentTypeRequestUnsupportedContentTypewhen trying to parse the request body but the content-type header isn't one of the known ones.User experience
Previously, requests for some endpoints would receive a 500 response if they passed unexpected headers.
Now, they will receive a 415 response, which is more indicative of a client error.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.