【发布时间】:2012-10-18 18:56:57
【问题描述】:
我正在为使用 Tastypie 和 Django 的应用程序创建基于 REST 的 API。问题是 Tastypie 中的默认 API url 包含 url 模式中的版本信息,即
http://lx:3001/api/v1/vservers/?username=someuser&api_key=someapikey
我希望我的网址不受 API 版本信息的影响,如下所示:
http://lx:3001/api/vservers/?username=someuser&api_key=someapikey
urls.py
v1_api = Api()
v1_api.api_name = ''
v1_api.register(UserResource())
...
url(r'^api/', include(v1_api.urls)),
我仍然用空字符串覆盖 api_name
http://lx:3001/api/vservers/?username=someuser&api_key=someapikey 不起作用。
我怎样才能完全摆脱版本信息?
谢谢..
【问题讨论】:
-
这不是一个好主意。您应该始终对您的 API 进行版本控制。如果您将来更改某些内容,您会后悔这个决定。
-
我同意。这是一个功能。当您(不可避免地)需要添加或更改 API 时,对 API 进行版本控制可以让您保持向后兼容。尚未更新其调用的客户端仍然可以运行,而新客户端可以利用新的 API 功能。
-
我的想法是在客户不知道版本信息的情况下,随时将客户引导至最新版本的 API。
-
非常糟糕的主意,他们的应用程序会崩溃。考虑一下当您发布新 API 并且他们的应用程序开始使用它而无需进行必要更改时的情况。
-
感谢您的澄清。我将版本信息保留在 url 中。