我正在创建一个 api,其中两个端点使用 ws(s) 协议。
由于我的 API 位于 Google 端点之后,因此每个端点都需要定义到 OpenApi2.0 文件中。
为了创建这个定义,我使用了 drf-yasg。
我有一个路由。py 文件如下:
""" systems/routing.py"""
from django.urls import path
from .consumers.list_sessions_consumer import MyFirstConsumer
from .consumers.session_consumer import MySecondConsumer
urlpatterns = [
path(r'v1/ws/yo/<str:uuid>/sessions-sumpup', MyFirstConsumer.as_asgi()),
path(r'v1/ws/yo/<str:uuid>/sessions', MySecondConsumer.as_asgi()),
]
我将它注册到我的 asgi.py 文件中,如下所示:
# pylint: skip-file
""" main/asgi.py """
import os
import django
from django.core.asgi import get_asgi_application
django_asgi_app = get_asgi_application()
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings')
django.setup()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from systems.websockets.routing import urlpatterns as system_websocket_url
application = ProtocolTypeRouter({
"http": django_asgi_app,
"websocket": AuthMiddlewareStack(
URLRouter(
system_websocket_url
)
),
})
不要介意导入顺序,这是由于此错误:使用 asgi 时尚未加载 Django 应用程序
所以我的套接字按预期工作,现在,我想要我的命令行:python3 manage.py generate_swagger swagger.yaml将这些新端点添加到我的 swagger 文件中。
我试图直接将我的 url 添加到同一个对象,然后我的所有其他 url 像这样:
urlpatterns = [
path(r'v1/toto/<str:uuid>', MyView.as_view()),
...,
path(r'v1/ws/yo/<str:uuid>/sessions-sumpup', MyFirstConsumer.as_asgi()),
path(r'v1/ws/yo/<str:uuid>/sessions', MySecondConsumer.as_asgi()),
]
但是我的招摇文件中没有任何显示。
有任何想法吗 ?
谢谢