1

我正在用 python (3.x) 和瓶子实现一个简单的 web 应用程序。由于我想公开的 API 将来可能会发生变化,所以我想增加拥有不同版本的可能性。

关于这个主题,这里有一些有见地的答案,但除非 Web API 的版本控制被证明是一个坏主意,否则我还是想尝试一下。

关于我的应用程序:例如,虽然 1.0 版允许通过以下调用POST /resource

@post('/resource')
post_item(name=item_name, value=item_value)

未来的版本可能会:

@post('/resource')
post_item(name=item_name, value=item_value, fullname=longer_item_name)

为简单起见,假设关键字参数 'name'、'value'、'fullname' 来自 FROM 数据字段:

<input name="name" type="text" />

现在,首先想到的是version在开头插入一个参数,类似于IP对其标头所做的事情:

post_item(v=1, name=item_name, value=item_value)
post_item(v=2, name=item_name, value=item_value, fullname=longer_item_name)

不过,这似乎有点麻烦。有没有任何网络微框架库可以帮助解决这个问题?我是否超出了框架的功能?

4

1 回答 1

6

这绝对不是一个被证明的坏主意,更像是一个被证明的必要性。问题是对于处理它的最佳方式几乎没有达成一致(除了在基于 URI 的方法的高层上达成一致)。

Apigee 在这里有一些关于 API 版本控制策略的好文章:

https://blog.apigee.com/taglist/versioning

以下是流行的 API 如何处理版本控制的一个很好的概述,以及更多讨论版本控制策略的资源:

http://www.lexicalscope.com/blog/2012/03/12/how-are-rest-apis-versioned/

于 2013-03-19T20:16:32.920 回答