gpt4 book ai didi

django-rest-framework - Openapi - 重复的 operationID 和额外的参数

转载 作者:行者123 更新时间:2023-12-04 03:34:22 39 4
gpt4 key购买 nike

我正在使用 Swagger 记录我的 Django API。当我生成我的 Openapi 架构时,为我的每个路径添加了带有附加参数 {format} 的第二条路由,具有相同的操作 ID作为“正确”路线。

我读到如果我有多个相同模型的 View ,生成器可能会生成重复的 operationId,但我认为这不是我的情况。

总的来说,我的 View (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):
...

对于这两个 View ,我有这两条路径:

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 参数消失。以下是我管理 url 的方式:

from rest_framework.urlpatterns import format_suffix_patterns

urlpatterns = [...]

urlpatterns = format_suffix_patterns(urlpatterns) # Comment this

关于django-rest-framework - Openapi - 重复的 operationID 和额外的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67220850/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com