0
このアプリケーションでは、フラスコを包むconnexionを使用して、Webサーバーの世話をします。 APIはswaggerで指定します。 httpレスポンスがWebサーバーから公式化されたコードのどこかに簡単に入り込む方法はありますか?すべてのhttp応答をエラーコード> = 400で記録します。
可能であれば、私は200個のエラーハンドラ、または最も人気のある10個の指を挟むのを避けたいと思います。
api.py
import connexion
app = connexion.App(__name__,
specification_dir='../swagger/',
swagger_ui=False,
validator_map={
'body': connexion.decorators.validation.RequestBodyValidator
})
app.add_api('swagger.yml', strict_validation=True)
# If I had to use app.error_handler decorators to implement the special
# treatment of http responses with error codes, I would put it here
swagger.yml
swagger: '2.0'
info:
title: My Minimal Working Example
consumes:
- application/json
produces:
- application/json
basePath: /api/v1
paths:
'/do_something':
post:
tags:
- MyTag
operationId: entrypoint.do_something
summary: Do something on request
parameters:
- name: data
in: body
schema:
$ref: '#/definitions/data'
responses:
'200':
description: Success!
schema:
$ref: '#/definitions/Response'
'400':
description: Error!
schema:
$ref: '#/definitions/Response'
'403':
description: Not Authorized
schema:
$ref: '#/definitions/Response'
# a lot more stuff and "definitions"
コードを直接記述するのではなく、swaggerを使用するだけであれば、swaggerでできることに限られます。それ以外の場合は、Flaskをサブクラス化してそのエラー処理をオーバーライドする方法があります。スワッガーやコネクションを知らないので、これがあなたのケースで可能かどうかはわかりません。あなたはFlaskクラスまたはappインスタンスを制御できますか? – davidism
私は直接コードを書いており、アプリケーションインスタンスを制御しています – Arne
それを示す[mcve]を含めるように[編集]してください。 – davidism