Skip to content

Commit ba7c6bc

Browse files
author
Evghenii Goncearov
committed
Fix according to jmcarp#88 (comment)
1 parent de6f5ad commit ba7c6bc

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

flask_apispec/apidoc.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ def get_parameters(self, rule, view, docs, parent=None):
9191
options['location'] = 'body'
9292
extra_params += openapi_converter(schema, **options) if args else []
9393

94-
rule_params = rule_to_params(rule, docs.get('params')) or []
94+
rule_params = rule_to_params(
95+
rule, docs.get('params'), major_api_version=self.spec.openapi_version.major) or []
9596

9697
return extra_params + rule_params
9798

flask_apispec/paths.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,13 @@ def rule_to_path(rule):
1818
DEFAULT_TYPE = ('string', None)
1919

2020

21-
def rule_to_params(rule, overrides=None):
21+
def rule_to_params(rule, overrides=None, *, major_api_version = 2):
2222
overrides = (overrides or {})
2323
result = [
24-
argument_to_param(argument, rule, overrides.get(argument, {}))
24+
argument_to_param(
25+
argument, rule,
26+
overrides.get(argument, {}),
27+
major_api_version=major_api_version)
2528
for argument in rule.arguments
2629
]
2730
for key in overrides.keys():
@@ -30,17 +33,25 @@ def rule_to_params(rule, overrides=None):
3033
result.append(overrides[key])
3134
return result
3235

33-
def argument_to_param(argument, rule, override=None):
36+
37+
def argument_to_param(argument, rule, override=None, *, major_api_version=2):
3438
param = {
3539
'in': 'path',
3640
'name': argument,
3741
'required': True,
3842
}
3943
type_, format_ = CONVERTER_MAPPING.get(type(rule._converters[argument]), DEFAULT_TYPE)
40-
param['type'] = type_
44+
schema = {}
45+
schema['type'] = type_
4146
if format_ is not None:
42-
param['format'] = format_
47+
schema['format'] = format_
4348
if rule.defaults and argument in rule.defaults:
4449
param['default'] = rule.defaults[argument]
50+
if major_api_version == 2:
51+
param.update(schema)
52+
elif major_api_version == 3:
53+
param['schema'] = schema
54+
else:
55+
raise NotImplementedError("No support for OpenAPI / Swagger Major version {}".format(major_api_version))
4556
param.update(override or {})
4657
return param

0 commit comments

Comments
 (0)