我试图将Swagger集成到我的Django Rest Framework API中。我安装了相关的软件包,并按照Github页面的快速入门指南进行操作。我虽然遇到了一些问题。 Swagger只显示视图的doc-comment。
基本上我有一个APIView解释给定的url(因为它可以有n-amount的#34;令牌"例如。" / first / second /"或" / a / b / c / d / e / f / g")进行数据库查询并选择正确的序列化程序,以根据请求类型和网址末尾的资源返回数据。
如果我正确理解了Swagger的工作原理,它会使用序列化器来获取示例json输入和其他相关数据,以便在ui中显示。有没有办法明确告诉它应该使用的序列化器?
最后,这是我的APIView的GET代码示例,用于显示序列化程序的用法。如您所见,使用了两种不同的序列化器:
isValid = self.isValidUrl(request.path)
if not isValid:
return Response("Error: The url is empty.")
url = self.trimTheUrl(request.path)
print url
try:
target = models.APINode.objects.get(uniquePath=url)
perm = IsOwner()
perm.has_object_permission(request, self, target)
#check is the APINode collection or item:
if target.objectType == "item":
#return JSON data of the materialItem:
serializer = ProductSerializer(target.materialItem)
return Response(serializer.data)
else:
#find objects in this collection
children = models.APINode.objects.filter(parentPath=target.uniquePath)
serializer = APINodeSerializer(children, many=True)
return Response(serializer.data)
except models.APINode.DoesNotExist:
return Response("404: No such collection or materialItem.")
无论它值多少,API代表一个集合&资源结构很像具有n深路径的文件系统。
答案 0 :(得分:0)
我找到了一种使用名为serializer的标签来实现此目的的方法。一个例子是serializer: UserDocSerializer
。你是这样的:
"""
Your View
---
... All about parameters and types ...
serializer: UserDocSerializer
...
我遇到的问题是它总是试图让我从视图中导入序列化器,所以我必须在views.py中声明这个:
class UserDocSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = ('username', 'image')
通过这个,您只需获得要显示的字段