Skip to content

Commit 700a322

Browse files
author
vvcheremushkin
committed
fix json response
1 parent 3defd49 commit 700a322

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def get_packages(package):
2929
'starlette<1',
3030
'apispec<4',
3131
],
32-
version='0.0.12',
32+
version='0.0.13',
3333
url='https://github.com/slv0/start_resty',
3434
license='BSD',
3535
description='The web framework',

star_resty/apidocs/route.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
from typing import Sequence, Union
1+
from typing import Sequence
22

33
from apispec import APISpec
4-
from starlette.routing import Route, Mount
4+
from starlette.routing import BaseRoute, Mount, Route
55

66
from .operation import setup_route_operations
77
from .utils import convert_path
88

99
__all__ = ('setup_routes',)
1010

1111

12-
def setup_routes(routes: Sequence[Union[Route, Mount]],
12+
def setup_routes(routes: Sequence[BaseRoute],
1313
spec: APISpec, version: int = 2,
1414
add_head_methods: bool = False,
1515
path: str = ''):
@@ -18,14 +18,15 @@ def setup_routes(routes: Sequence[Union[Route, Mount]],
1818
setup_routes(route.routes, spec, version=version, add_head_methods=add_head_methods,
1919
path=f'{path}{route.path}')
2020
continue
21-
elif isinstance(route, Route) and not route.include_in_schema:
22-
continue
21+
elif isinstance(route, Route):
22+
if not route.include_in_schema:
23+
continue
2324

24-
endpoint = getattr(route.endpoint, '__endpoint__', None)
25-
if endpoint is None:
26-
continue
25+
endpoint = getattr(route.endpoint, '__endpoint__', None)
26+
if endpoint is None:
27+
continue
2728

28-
operations = setup_route_operations(route, endpoint, version=version,
29-
add_head_methods=add_head_methods)
30-
route_path = f'{path}{route.path}'
31-
spec.path(convert_path(route_path), operations=operations)
29+
operations = setup_route_operations(route, endpoint, version=version,
30+
add_head_methods=add_head_methods)
31+
route_path = f'{path}{route.path}'
32+
spec.path(convert_path(route_path), operations=operations)

star_resty/apidocs/setup.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from apispec.ext.marshmallow import MarshmallowPlugin
66
from starlette.applications import Starlette
77
from starlette.requests import Request
8-
from starlette.responses import UJSONResponse
8+
from starlette.responses import JSONResponse
99

1010
from .route import setup_routes
1111
from .utils import resolve_schema_name
@@ -35,19 +35,19 @@ def setup_spec(app: Starlette, title: str,
3535
plugins=[MarshmallowPlugin(schema_name_resolver=resolve_schema_name)],
3636
**{'swagger': openapi_version, 'basePath': base_path, **options, **kwargs}
3737
)
38-
initialized = False
38+
api_spec = None
3939

4040
@app.route(route, include_in_schema=False)
4141
def generate_api_docs(_: Request):
42-
nonlocal initialized
42+
nonlocal api_spec
4343
nonlocal spec
44-
if not initialized:
44+
if api_spec is None:
4545
logger.info('initialize open api schema')
4646
setup_routes(app.routes, spec, version=get_open_api_version(openapi_version)
4747
, add_head_methods=add_head_methods)
48-
initialized = True
48+
api_spec = spec.to_dict()
4949

50-
return UJSONResponse(spec.to_dict())
50+
return JSONResponse(api_spec)
5151

5252

5353
def get_open_api_version(version: str) -> int:

0 commit comments

Comments
 (0)