我正在尝试使用Swagger记录一个已经存在的 python API 。我在编辑器的帮助下编写了 swagger.yaml 并记录了每条路线。现在我想使用connexion部署文档。
(swagger.yaml 文件的简要示例)
swagger: "2.0"
info:
description: "This is a description of the routes of the API"
version: "1.0.0"
title: "API"
basePath: "/api"
paths:
/home:
get:
tags:
- "API"
summary: "Home of the application"
operationId: home
responses:
200:
description: "Success"
schema:
type: object
properties:
user_id:
type: string
username:
type: string
403:
description: "Limit of api connections overrun"
我在服务器启动期间通过 connexion.app 更改了 Flask 应用程序,并且能够指定 .yaml 文件。但是当我尝试启动它时,它会立即崩溃:
File "/usr/local/lib/python2.7/dist-packages/connexion/utils.py", line 74, in get_function_from_name
raise ValueError("Empty function name")
exceptions.ValueError: Empty function name
据我了解,connexion 将基于对象operationId的手动测试功能,在需要指向处理请求的功能的每条路线中。问题:API 的每个路由都定义为嵌套函数。
def add_routes(app, oauth):
@app.route('/api/home', methods=['GET'])
@oauth.require_oauth()
def home():
user = request.oauth.user
return jsonify(
user_id=user.user_id,
username=user.username
)
我知道python中的嵌套函数实际上根本不是函数:不可调用,只是存在于语言中,以便我们程序员组织我们的代码。
我认为这将是连接的问题,它只是无法找到这些功能并将它们映射到手动测试功能,但我不知道如何解决这个问题。您是否看到允许 connexion 映射函数而无需重构整个 API 以便没有嵌套函数的东西?
非常感谢您的帮助。