-
Notifications
You must be signed in to change notification settings - Fork 1.1k
fix(rest): set statusCode as 201 for POST request #1245
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
Conversation
| } | ||
|
|
||
| // Any item down the sequence chain can override the statusCode if needed | ||
| if (request.method === 'POST') { |
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.
This is too hacky. Not all POST is for create. Can we allow/infer the statusCode from https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responses-object?
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.
There are a few potential options for controller methods to express status code:
- Direct access to
Responseobject - Decorate the method to customize the default status code
- Return a
HttpResponseobject such as{statusCode: 201, headers: {}, body: result}. It's similar as https://docs.oracle.com/javaee/6/api/javax/ws/rs/core/Response.ResponseBuilder.html
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.
We have issues to track the stories of providing a way for users to set the statusCode and appropriate response headers.
I personally like option 3 -- but for a POST request I think we should automatically be defaulting to 201 if a different statusCode is not provided.
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.
@virkt25 After I did my PoC in #1260, I tend to agree with your workaround here as the quickest fix....or allowing more time, we can do proposal#3.
Miroslav brings an important thing: when a response returns 201, it also includes a header with the URI of created item.
but for a POST request I think we should automatically be defaulting to 201 if a different statusCode is not provided.
I still feel 200 is better, since if default POST to 201, the user need to provide header in result by default as well.
|
I believe @jannyHou is investigating a less "hacky" approach so I'll close this PR for now. |
temporary fix for #788
Checklist
npm testpasses on your machinepackages/cliwere updatedexamples/*were updated