t_t*_*tia 5 python swagger falconframework
我正在为 falcon 框架实现 swagger 验证中间件。但是,存在请求不成功的问题。
如果在响应程序中甚至在访问资源之前引发 falcon HTTP 错误(例如 404 Not Found),则在涉及process_response中间件方法时,响应仍然具有状态代码 200 和空正文。
我无法理解这是一个错误还是一个功能。
当我删除验证中间件时,一切都会按预期进行。当存在 swagger 验证中间件时,所有响应的process_response状态代码都是 200,包括不成功的响应。
我想在 HTTP 404、401、400 等情况下跳过响应的 swagger 验证/序列化。当响应到达 时process_response,如果状态代码为 200,如何发现引发了错误?如何在中间件中仅处理成功的响应?
另外,falcon 在什么时候设置正确的响应状态代码和正文?
蟒蛇3.5,猎鹰==1.0.0
任何帮助深表感谢。
UPD:最小工作示例:
app.py:
import falcon
class Validator:
def process_resource(self, req, resp, resource, params):
raise falcon.HTTPBadRequest("Too bad", "All requests are bad")
def process_response(self, req, resp, resource):
print(resp.status, resp.body)
class Resource:
def on_get(self, req, resp):
pass
application = falcon.API(middleware=[Validator()])
application.add_route('/test', Resource())
Run Code Online (Sandbox Code Playgroud)
$ http http http://127.0.0.1:8000/test返回:
HTTP/1.1 400 Bad Request
Connection: close
Date: Tue, 28 Jun 2016 15:09:04 GMT
Server: gunicorn/19.6.0
content-length: 69
content-type: application/json; charset=UTF-8
vary: Accept
{
"description": "All requests are bad",
"title": "Too bad"
}
Run Code Online (Sandbox Code Playgroud)
当网络应用程序打印时200 OK None。
| 归档时间: |
|
| 查看次数: |
2424 次 |
| 最近记录: |