Я пишу свой первый REST API (с django-rest-framework).django-rest-framework document API в OPTIONS
Я добавляю параметры 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, я расширил метаданные (self, request), которые чувствуют себя взломанными. Пропустил ли я какой-то встроенный способ установки описаний параметров?
Спасибо!
Спасибо, но я все еще не уверен в параметрах GET. Я рассмотрел пример из учебника выше. Описание извлекается из класса, поэтому я изменю его. Я нашел его и в коде рамки: ret ['description'] = get_view_description (self .__ class__). Однако я не знаю, как это сделать для параметров GET - см. Мой код (region_id). –
Я использую API для просмотра (что отличает BTW :)). В примере, который вы указали, в действиях нет «GET», это по дизайну? –