0
有問題的應用程序使用connexion包裝燒瓶來照顧網絡服務器。這個API是用swagger指定的。有沒有一種簡單直接的方法可以讓代碼從http服務器制定http響應?記錄所有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可以做的事情。否則,可以繼承Flask的子類並覆蓋它的錯誤處理。不知道Swagger或Connexion,我不知道這是否可能在你的情況。你有對Flask類或應用程序實例的控制嗎? – davidism
我直接編寫代碼並控制應用程序實例 – Arne
請[edit]包含一個[mcve]來證明這一點。 – davidism