Awesome
pyramid_oas3
Pyramid Webアプリケーションに対して、 OpenAPI 3.0を利用した、 リクエストの検証・パースを実施するライブラリです。
pyramid_swaggerのOpenAPI 3.0対応版の様な位置づけです。
設定項目
- pyramid_oas3.validate_response: bool
- レスポンスのJSONも検証するかを設定します(デフォルト: False)
- pyramid_oas3.fill_by_default: bool
- リクエストデータに対してOpenAPI定義で設定されたdefault値で埋めるかを設定します(デフォルト: False)
- pyramid_oas3.response_reviver: Optional[Callable[[Union[int, str], JSON_TYPES], Union[JSON_TYPES, pyramid_oas3.UNDEFINED]]]
- JSON_TYPES: Union[int, float, str, bool, None, list, dict]
- JSON.parseのreviverと同様の処理を、 レスポンススキーマ検証実行前に適用するようにします
- デフォルト: None (reviverを適用しない)
使い方
以下のように設定してpyramidに組み込みます
settings = {
'pyramid.includes': 'pyramid_oas3',
'pyramid_oas3.schema': yaml.load(open('schema.yaml').read()),
'pyramid_oas3.validate_response': True,
'pyramid_oas3.fill_by_default': True,
}
検証失敗時は以下の例外が返却されるので、 適宜exception_view_configを設定してください
- pyramid_oas3.ValidationErrors: リクエストデータのスキーマ検証失敗時
- pyramid_oas3.ResponseValidationError: レスポンスデータのスキーマ検証失敗時
- pyramid.httpexceptions.HTTPBadRequest: クエリ文字列のパース失敗時
- pyramid.httpexceptions.HTTPNotAcceptable: リクエストのContentTypeに対応するものがスキーマにない *pyramid.httpexceptions.HTTPUnauthorized: リクエストに認証情報がない
以下にexception_view_configの例を示します
from pyramid.view import exception_view_config
@exception_view_config(ValidationErrors)
def failed_request_validation(exc, request):
res = Response(str(exc))
res.status_int = 400
return res
@exception_view_config(ResponseValidationError)
def failed_response_validation(exc, request):
res = Response(str(exc))
res.status_int = 500
return res