Openapi - 重复的 operationID 和额外的参数
Openapi - duplicate operationID and extra parameter
我正在使用 Swagger.When 记录我的 Django API 我生成了我的 Openapi 架构,为我的每个路径添加了带有附加参数 {format}
的第二条路由,其中与“正确”路线相同的操作 ID。
我读到如果我有多个相同模型的视图,生成器可能会生成重复的 operationId,但我认为这不是我的情况。
总的来说,我的观点(resource/api/views.py)都是这样组织的:
class ResourceList(APIView):
"""
View to list Resources.
"""
def get(self, request, parameter1):
...
class ResourceDetail(APIView):
"""
View to retrieve information of a Resource.
"""
def get(self, request, parameter1, parameter2):
...
对于这两个视图,我有这两条路径:
urlpatterns = ([
path('<str:parameter1>', views.ResourceList.as_view()),
path('<str:parameter1>/details/<str:parameter2>', views.ResourceDetail.as_view())
])
模式生成器为每个生成两条路线。
对于第一个路径:
Route: /api/resource/{parameter1}, Method: get
Route: /api/resource/{parameter1}{format}, Method: get
对于第二条路径:
Route: /api/resource/{parameter1}/details/{parameter2}, Method: get
Route: /api/resource/{parameter1}/details/{parameter2}{format}, Method: get
出现这样的警告:
Route: /api/resource/{parameter1}, Method: get
Route: /api/resource/{parameter1}{format}, Method: get
An operationId has to be unique across your schema. Your schema may not work in other tools.
这个警告显然是有道理的,因为两条路线都有相同的operationID,(retrieveResourceList
在这种情况下)。我不明白的是为什么要生成第二条路线以及 format
参数的来源。
这是正常行为吗?如果不是,我做错了什么?
这可能不是完全解决此问题的方法,但就我而言,我尝试注释 format_suffix_patterns
并且 format
参数消失。以下是我管理网址的方式:
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [...]
urlpatterns = format_suffix_patterns(urlpatterns) # Comment this
我正在使用 Swagger.When 记录我的 Django API 我生成了我的 Openapi 架构,为我的每个路径添加了带有附加参数 {format}
的第二条路由,其中与“正确”路线相同的操作 ID。
我读到如果我有多个相同模型的视图,生成器可能会生成重复的 operationId,但我认为这不是我的情况。
总的来说,我的观点(resource/api/views.py)都是这样组织的:
class ResourceList(APIView):
"""
View to list Resources.
"""
def get(self, request, parameter1):
...
class ResourceDetail(APIView):
"""
View to retrieve information of a Resource.
"""
def get(self, request, parameter1, parameter2):
...
对于这两个视图,我有这两条路径:
urlpatterns = ([
path('<str:parameter1>', views.ResourceList.as_view()),
path('<str:parameter1>/details/<str:parameter2>', views.ResourceDetail.as_view())
])
模式生成器为每个生成两条路线。
对于第一个路径:
Route: /api/resource/{parameter1}, Method: get
Route: /api/resource/{parameter1}{format}, Method: get
对于第二条路径:
Route: /api/resource/{parameter1}/details/{parameter2}, Method: get
Route: /api/resource/{parameter1}/details/{parameter2}{format}, Method: get
出现这样的警告:
Route: /api/resource/{parameter1}, Method: get
Route: /api/resource/{parameter1}{format}, Method: get
An operationId has to be unique across your schema. Your schema may not work in other tools.
这个警告显然是有道理的,因为两条路线都有相同的operationID,(retrieveResourceList
在这种情况下)。我不明白的是为什么要生成第二条路线以及 format
参数的来源。
这是正常行为吗?如果不是,我做错了什么?
这可能不是完全解决此问题的方法,但就我而言,我尝试注释 format_suffix_patterns
并且 format
参数消失。以下是我管理网址的方式:
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [...]
urlpatterns = format_suffix_patterns(urlpatterns) # Comment this