Created by: rienafairefr
PR checklist
-
Read the contribution guidelines. -
Ran the shell script under ./bin/to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh,./bin/openapi3/{LANG}-petstore.sh,./bin/security/{LANG}-petstore.shand./bin/openapi3/security/{LANG}-petstore.shif updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\. -
Filed the PR against the correct branch: master,. Default:3.4.x,4.0.xmaster. -
Copied the technical committee to review the pull request if your PR is targeting a particular programming language.
Description of the PR
In OAS 3 it's possible to return multiple content-type, and for now the rest clients in the different languages don't support that, e.g. problems or related PRs: #206 (closed) #1367 #440 (closed)
I've added returnType returnType field to the CodegenResponse class, this way we can get a mapping between the response code and the expected return type of that response, and I've implemented that logic in the Python client, through a response_types parameter dictionary. The Accept header is modified to include all the cases that the client expects, not just application/json.
The REST response is UTF-8 decoded if needed (not decoded in case of a file type), and deserialized according to the response type expected for the HTTP status code that is encountered.
Tested working on a API endpoint that returns a binary file on HTTP 200, and can also send a JSON with an error message for HTTP 401/403/500.