Skip to content

Commit 866028f

Browse files
authored
Merge ad4f6f3 into 41b3b59
2 parents 41b3b59 + ad4f6f3 commit 866028f

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

flask_restx/api.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ class Api(object):
9494
:param FormatChecker format_checker: A jsonschema.FormatChecker object that is hooked into
9595
the Model validator. A default or a custom FormatChecker can be provided (e.g., with custom
9696
checkers), otherwise the default action is to not enforce any format validation.
97+
:param str default_swagger_filename: The default swagger filename.
9798
"""
9899

99100
def __init__(
@@ -123,6 +124,7 @@ def __init__(
123124
catch_all_404s=False,
124125
serve_challenge_on_401=False,
125126
format_checker=None,
127+
default_swagger_filename="swagger.json",
126128
**kwargs
127129
):
128130
self.version = version
@@ -153,6 +155,7 @@ def __init__(
153155
self._refresolver = None
154156
self.format_checker = format_checker
155157
self.namespaces = []
158+
self.default_swagger_filename = default_swagger_filename
156159

157160
self.ns_paths = dict()
158161

@@ -293,7 +296,7 @@ def _register_specs(self, app_or_blueprint):
293296
app_or_blueprint,
294297
SwaggerView,
295298
self.default_namespace,
296-
"/swagger.json",
299+
"/" + self.default_swagger_filename,
297300
endpoint=endpoint,
298301
resource_class_args=(self,),
299302
)

tests/test_swagger.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3323,3 +3323,25 @@ def get(self):
33233323

33243324
path = data["paths"]["/with-parser/"]
33253325
assert "parameters" not in path
3326+
3327+
def test_nondefault_swagger_filename(self, app, client):
3328+
api = restx.Api(doc="/doc/test", default_swagger_filename="test.json")
3329+
ns = restx.Namespace("ns1")
3330+
3331+
@ns.route("/test1")
3332+
class Ns(restx.Resource):
3333+
@ns.doc("Docs")
3334+
def get(self):
3335+
pass
3336+
3337+
api.add_namespace(ns)
3338+
api.init_app(app)
3339+
3340+
resp = client.get("/test.json")
3341+
assert resp.status_code == 200
3342+
assert resp.content_type == "application/json"
3343+
resp = client.get("/doc/test")
3344+
assert resp.status_code == 200
3345+
assert resp.content_type == "text/html; charset=utf-8"
3346+
resp = client.get("/ns1/test1")
3347+
assert resp.status_code == 200

0 commit comments

Comments
 (0)