# デコレーター
スキーマにコンテンツを追加するための主なメカニズムは、エンドポイントを装飾することです。もしあなたが過去に sanic-openapi
を使ったことがあるなら、これは馴染みのあるものでしょう。デコレータとその引数は OAS v3.0 仕様 (opens new window) とほぼ同じです。
表示されるすべての例は、ルート定義の周りにラップされます。これらを作成する際には、Sanic ルート・デコレーター (@app.route
や @app.get
など) が一番外側のデコレーターであることを確認する必要があります。つまり、最初にそれを置き、その後に以下のデコレータを1つ以上置く必要があります。
from sanic_ext import openapi
@app.get("/path/to/<something>")
@openapi.summary("This is a summary")
@openapi.description("This is a description")
async def handler(request, something: str):
...
また、以下の例の多くはモデルオブジェクトを参照していることがわかります。シンプルにするために、例では UserProfile
を使用し、以下のようになります。重要なのは、型付けされたクラスであれば何でも良いということです。dataclass
や他の種類のモデルオブジェクトであることは容易に想像がつくでしょう。
class UserProfile:
name: str
age: int
email: str
# デコレーターの定義
# @opanepi.definition
@openapi.definition
デコレーターを使用すると、パス上の操作のすべての部分を一度に定義することができます。これは、他のデコレーターと同じように操作の定義を作成できるオムニバムデコレーターです。複数のフィールド固有のデコレータを使うか、あるいは単一のデコレータを使うかは、 開発者のスタイルによります。
このフィールドは、操作の定義を容易にするために、意図的に複数のタイプを受け入れる寛容なものとなっています。
Arguments
フィールド | タイプ |
---|---|
body | dict, RequestBody, ユーザー定義モデル |
deprecated | bool |
description | str |
document | str, ExternalDocumentation |
exclude | bool |
operation | str |
parameter | dict, Parameter, ユーザー定義モデル, [dict], [Parameter], [ユーザー定義モデル] |
response | dict, Response, ユーザー定義モデル, [dict], [Response], [ユーザー定義モデル] |
summary | str |
tag | str, Tag, [str], [Tag] |
Examples
@openapi.definition(
body=RequestBody(UserProfile, required=True),
summary="User profile update",
tag="one",
response=[Success, Response(Failure, status=400)],
)
その他の例については、以下の例を参照してください。以下のデコレータの値は、対応するキーワード引数で使用することができます。
# フィールド固有デコレーター
以下のすべてのデコレーターは @openapi
をベースにしています。