【发布时间】:2014-07-23 08:16:37
【问题描述】:
我正在尝试将 Swagger 集成到我的 Django Rest Framework API。我安装了相关软件包并按照 Github 页面上的快速入门指南进行操作。不过我遇到了一些问题。 Swagger 只显示视图的文档注释。
基本上我有一个 APIView 可以解释给定的 url(因为它可以有 n 个“令牌”,例如“/first/second/”或“/a/b/c/d/e/f/g” ) 进行 db-query 并根据请求类型和 url 末尾的资源选择正确的序列化程序来返回数据。
如果我正确理解了 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 深路径的文件系统。
【问题讨论】:
标签: django rest serialization django-rest-framework swagger