我正在编写我的第一个REST API(使用django-rest-framework)。
我正在添加URL参数以过滤结果。我的理解是这些参数的文档应该在OPTIONS动词中提供。以下是我的代码:
class SuburbViewSet(viewsets.ReadOnlyModelViewSet):
"""
Retrieves the suburbs (20 per page).
GET and OPTIONS allowed.
"""
model = Suburb
serializer_class = SuburbSerializer
def get_queryset(self):
"""
Can filter by region_id, ...
- using query parameters in the URL.
"""
queryset = Suburb.objects.all()
region_id = self.request.QUERY_PARAMS.get('region_id', None)
if region_id is not None:
queryset = queryset.filter(region_id=region_id)
return queryset
def metadata(self, request):
ret = super(SuburbViewSet, self).metadata(request)
ret['parameters'] = {
"page": {
"type": "integer",
"description": "The page number",
"required": False
},
"region_id": {
"type": "integer",
"description": "The region ID to filter the results",
"required": False
}
}
return ret
这是最好/唯一的REST方法吗(解释OPTIONS中的参数是什么)?
关于django-rest-framework,我扩展了metadata(self, request),但感觉有点hacky。我是否错过了设置参数描述的内置方法?
谢谢!