redirect_to: split arg process for GET vs POST/PATCH/PUT, so the latter use formData for parameters. Fixed #476.

POST/PUT only support formData body, not JSON.

Note that PATCH parameters do not appear in Swagger 2 UI.
This commit is contained in:
Brett Randall
2018-07-02 15:04:44 +10:00
parent d3d33de226
commit dd2513ae59
+47 -9
View File
@@ -510,20 +510,58 @@ def redirect_to():
- Redirects
produces:
- text/html
parameters:
- in: query
name: url
type: string
required: true
- in: query
name: status_code
type: int
get:
parameters:
- in: query
name: url
type: string
required: true
- in: query
name: status_code
type: int
post:
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: url
type: string
required: true
- in: formData
name: status_code
type: int
required: false
patch:
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: url
type: string
required: true
- in: formData
name: status_code
type: int
required: false
put:
consumes:
- application/x-www-form-urlencoded
parameters:
- in: formData
name: url
type: string
required: true
- in: formData
name: status_code
type: int
required: false
responses:
302:
description: A redirection.
"""
args = CaseInsensitiveDict(request.args.items())
argsDict = request.form.to_dict(flat=True) if request.method in ('POST', 'PATCH', 'PUT') else request.args.items()
args = CaseInsensitiveDict(argsDict)
# We need to build the response manually and convert to UTF-8 to prevent
# werkzeug from "fixing" the URL. This endpoint should set the Location