-
-
Notifications
You must be signed in to change notification settings - Fork 9
Description
It appears that, unlike httpbin, fastapi-httpbin consistently interprets a urlencode payload in a POST request as JSON.
When a POST request is sent to httpbin, with the following command:
$ curl -v -d "birthyear=1905&press=%20OK%20" http://www.httpbin.org/post
curl automatically sets the Content-Type header to application/x-www-form-urlencoded, as its default behavior. httpbin responds with the following:
"form": {
"birthyear": "1905",
"press": " OK "
},
"json": nullHowever, if the Content-Type is specified as application/json:
$ curl -v -H "content-type: application/json" -d '{"birthyear": 1905, "press": " OK "}' http://www.httpbin.org/post
The response now includes a populated "json" field:
"json": {
"birthyear": 1905,
"press": " OK "
},In contrast, it appears that fastapi-httpbin always expects JSON content, even when the Content-Type is set to application/x-www-form-urlencoded:
$ curl -v -d "birthyear=1905&press=%20OK%20" https://httpbin.dmuth.org/post
This request produces an error message in the "data" field:
"data": {
"message": "No JSON/bad JSON supplied. If you used Swagger, you'll need to use curl on the CLI with the -d option instead for non-GET methods, or GET-method data for GET."
}If the Content-Type is set to application/json however, it works as expected:
$ curl -v -H "content-type: application/json" -d '{"birthyear": 1905, "press": " OK "}' https://httpbin.dmuth.org/post
The response from fastapi-httpbin then successfully populates the "data" field with the submitted form data:
"data": {
"birthyear": 1905,
"press": " OK "
}I'm uncertain whether the observed behavior with content-type: application/x-www-form-urlencoded, which differs from httpbin, is an intended feature.