Vấn đề
Theo đề xuất trong bài đăng blog Các phương pháp hay nhất để thiết kế một API RESTful thực dụng , tôi muốn thêm một fields
tham số truy vấn vào một API dựa trên Django Rest Framework cho phép người dùng chỉ chọn một tập hợp con các trường trên mỗi tài nguyên.
Thí dụ
Bộ nối tiếp:
class IdentitySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.Identity
fields = ('id', 'url', 'type', 'data')
Một truy vấn thông thường sẽ trả về tất cả các trường.
GET /identities/
[
{
"id": 1,
"url": "http://localhost:8000/api/identities/1/",
"type": 5,
"data": "John Doe"
},
...
]
Một truy vấn có fields
tham số sẽ chỉ trả về một tập hợp con của các trường:
GET /identities/?fields=id,data
[
{
"id": 1,
"data": "John Doe"
},
...
]
Một truy vấn có các trường không hợp lệ sẽ bỏ qua các trường không hợp lệ hoặc gây ra lỗi máy khách.
Mục tiêu
Điều này có thể ra khỏi hộp bằng cách nào đó? Nếu không, cách đơn giản nhất để thực hiện điều này là gì? Đã có gói bên thứ 3 nào làm được điều này chưa?