Use docstring of handler in the OAS description
This commit is contained in:
parent
03854cf939
commit
913f50298c
@ -1,3 +1,4 @@
|
|||||||
|
from inspect import getdoc
|
||||||
import typing
|
import typing
|
||||||
from typing import List, Type
|
from typing import List, Type
|
||||||
|
|
||||||
@ -67,6 +68,9 @@ def _add_http_method_to_oas(
|
|||||||
oas_operation: OperationObject = getattr(oas_path, http_method)
|
oas_operation: OperationObject = getattr(oas_path, http_method)
|
||||||
handler = getattr(view, http_method)
|
handler = getattr(view, http_method)
|
||||||
path_args, body_args, qs_args, header_args = _parse_func_signature(handler)
|
path_args, body_args, qs_args, header_args = _parse_func_signature(handler)
|
||||||
|
description = getdoc(handler)
|
||||||
|
if description:
|
||||||
|
oas_operation.description = description
|
||||||
|
|
||||||
if body_args:
|
if body_args:
|
||||||
oas_operation.request_body.content = {
|
oas_operation.request_body.content = {
|
||||||
|
@ -9,8 +9,14 @@ from aiohttp.web_exceptions import HTTPMethodNotAllowed
|
|||||||
from aiohttp.web_response import StreamResponse
|
from aiohttp.web_response import StreamResponse
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
|
|
||||||
from .injectors import (AbstractInjector, BodyGetter, HeadersGetter,
|
from .injectors import (
|
||||||
MatchInfoGetter, QueryGetter, _parse_func_signature)
|
AbstractInjector,
|
||||||
|
BodyGetter,
|
||||||
|
HeadersGetter,
|
||||||
|
MatchInfoGetter,
|
||||||
|
QueryGetter,
|
||||||
|
_parse_func_signature,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class PydanticView(AbstractView):
|
class PydanticView(AbstractView):
|
||||||
|
@ -15,9 +15,13 @@ class Pet(BaseModel):
|
|||||||
|
|
||||||
class PetCollectionView(PydanticView):
|
class PetCollectionView(PydanticView):
|
||||||
async def get(self) -> r200[List[Pet]]:
|
async def get(self) -> r200[List[Pet]]:
|
||||||
|
"""
|
||||||
|
Get a list of pets
|
||||||
|
"""
|
||||||
return web.json_response()
|
return web.json_response()
|
||||||
|
|
||||||
async def post(self, pet: Pet) -> r201[Pet]:
|
async def post(self, pet: Pet) -> r201[Pet]:
|
||||||
|
"""Create a Pet"""
|
||||||
return web.json_response()
|
return web.json_response()
|
||||||
|
|
||||||
|
|
||||||
@ -52,6 +56,7 @@ async def test_generated_oas_should_have_pets_paths(generated_oas):
|
|||||||
|
|
||||||
async def test_pets_route_should_have_get_method(generated_oas):
|
async def test_pets_route_should_have_get_method(generated_oas):
|
||||||
assert generated_oas["paths"]["/pets"]["get"] == {
|
assert generated_oas["paths"]["/pets"]["get"] == {
|
||||||
|
"description": "Get a list of pets",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"content": {
|
"content": {
|
||||||
@ -71,12 +76,13 @@ async def test_pets_route_should_have_get_method(generated_oas):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_pets_route_should_have_post_method(generated_oas):
|
async def test_pets_route_should_have_post_method(generated_oas):
|
||||||
assert generated_oas["paths"]["/pets"]["post"] == {
|
assert generated_oas["paths"]["/pets"]["post"] == {
|
||||||
|
"description": "Create a Pet",
|
||||||
"requestBody": {
|
"requestBody": {
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user