使用Python Flask运行REST API版本的最佳方法是什么?

And*_*rew 4 python git rest flask

我在Python Flask中创建REST API,并想知道创建引用特定git标记的可版本化API的选项有哪些.

我希望能够做的是指定API的一个版本,例如http://myapiserver.com/flaskapp/query/listcontent?version=1.1

然后将版本链接返回到我在git中标记为v1.1的代码.

有哪些选项以及管理此选项的最佳方法是什么?

Mig*_*uel 5

我可以想到两种方法来支持版本化的API,但是它们都没有涉及应用程序搞乱它自己的git存储库,就像你似乎在你的问题中提出的那样.

例如,假设您有两个版本的API,v1.0和v1.1.

直接的方法是将两个版本安装在不同的目录上运行,每个版本都在不同的localhost端口或unix套接字上进行侦听.这两个版本的路由不需要嵌入版本,因此例如,两者都可以有/users端点.将所有内容联系在一起的是一个反向代理(如nginx),它使用版本控制的外部URL公开这两个api,后者映射/v1.0/users到v1.0服务器和/v1.1/usersv1.1服务器.

另一个选择是让v1.1服务器响应v1.1端点和v1.0端点.在这种情况下,服务器将具有路由中的版本,因此v1.1服务器将同时具有/v1.0/users/v1.1/users.这看起来似乎是一个复杂的问题,因为每个新的API版本都必须支持所有旧版本,但它也可以被视为一种优化,因为对于不会发生变化或版本之间差异最小的API端点,可以使用相同的代码处理它们:

@app.route('/<version>/users')
def users(version):
    # do something
    return jsonify(response)
Run Code Online (Sandbox Code Playgroud)