Conversation
| } | ||
|
|
||
| // Any item down the sequence chain can override the statusCode if needed | ||
| if (request.method === 'POST') { |
There was a problem hiding this comment.
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.
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.
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.
@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