Open nikrooz opened 1 week ago
@nikrooz Happy to review if you create a PR. Out of curiosity what is the usecase for a PUT/POST without a request body?
Thanks @mnaumanali94.
I'm not an expert in API design, but while it's uncommon to use a POST request without a body, it can be useful in certain scenarios. For example, consider POST /workflows/{id}/run
, where the request triggers a state change. In this case, using POST is ideal because it indicates a mutation, even though no additional information is needed in the body.
Our use case is slightly more nuanced. In our situation, "getting" a resource induces side effects, including some state changes. Therefore, using POST is beneficial to accurately represent these side effects in the API and ensure the correct caching behavior.
I have opened https://github.com/stoplightio/elements/pull/2739, please have a look when you have a moment. Thanks for your help.
Context
This bug affects POST/PUT/PATCH endpoints that lack a request body. When a request is made, a
Content-Type: application/json
header is added, which can cause an error in the API as it attempts to decode a nonexistent request body.Current Behavior
The "Try-it" feature and example snippets add a
Content-Type: application/json
header to the request, even when no request body is specified in the spec for POST/PUT/PATCH endpoints.Expected Behavior
If no request body is defined, the
Content-Type
header should not be included.Possible Workaround/Solution
shouldIncludeBody
here is resolved totrue
asbodyInput
is""
.bodyInput
comes from here ,which is set to""
in here when themediaTypeContent
isundefined
which is the case when there is norequestBody
.undefined
fromgenerateExampleFromMediaTypeContent
whenmediaTypeContent
isundefined
. If this is actually the solution, happy to make a PR.Steps to Reproduce
curl
snippet includeContent-Type
Content-Type
headerEnvironment