版本控制
不同的 API 版本号
使用 Django Ninja Extra, ,从单个 Django 项目运行多个 API 版本非常容易。
你所要做的就是创建两个或更多具有不同 version
参数的 NinjaAPI 实例:
api_v1.py
:
from ninja_extra import NinjaExtraAPI, route, api_controller
@api_controller
class MyV1Controller:
@route.get('/hello')
def hello(self):
return {'message': 'Hello from V1'}
@route.get('/example')
def example(self):
return {'message': 'Hello from V1 Example'}
api = NinjaExtraAPI(version='1.0.0')
api.register_controllers(MyV1Controller)
api_v2.py: 你可以复用你的 API 控制器并对特定路线进行修改。
from ninja_extra import NinjaExtraAPI, route, api_controller
from .api_v1 import MyV1Controller
@api_controller
class MyV2Controller(MyV1Controller):
@route.get('/example')
def example(self):
return {'message': 'Hello from V2 Example'}
api = NinjaExtraAPI(version='2.0.0')
api.register_controllers(MyV2Controller)
然后在 urls.py 中:
...
from api_v1 import api as api_v1
from api_v2 import api as api_v2
urlpatterns = [
...
path('api/v1/', api_v1.urls),
path('api/v2/', api_v2.urls),
]
现在你可以为每个版本访问不同的 OpenAPI 文档页面:
- http://127.0.0.1/api/v1/docs
- http://127.0.0.1/api/v2/docs
不同的业务逻辑
以同样的方式,你可以为不同的组件或领域定义不同的 API:
...
api = NinjaExtraAPI(auth=token_auth, urls_namespace='public_api')
...
api_private = NinjaExtraAPI(auth=session_auth, urls_namespace='private_api')
...
urlpatterns = [
...
path('api/', api.urls),
path('internal-api/', api_private.urls),
]
注意
如果你使用不同的 NinjaExtraAPI 实例, 你需要定义不同的 version
s 或不同的 urls_namespace
。
这与 NinjaAPI 实例相同。
评论
本文总阅读量次