हमें वेब एपीआई डिज़ाइन में इकाइयों के बीच संबंधों को लागू करने की आवश्यकता है। ऐसा करने के कई तरीके हैं (डीआरएफ दस्तावेज पर उल्लेख के रूप में):
- प्राथमिक कुंजी का उपयोग करना।
- इकाइयों के बीच हाइपरलिंकिंग का उपयोग करना।
- संबंधित इकाई पर एक अद्वितीय पहचान स्लग फ़ील्ड का उपयोग करना।
- संबंधित इकाई के डिफ़ॉल्ट स्ट्रिंग प्रस्तुति का उपयोग करना।
- मूल प्रतिनिधित्व के अंदर संबंधित इकाई को नज़रअंदाज़ करना।
- कुछ अन्य कस्टम प्रतिनिधित्व
HyperlinkedModelSerializer ModelSerializer से निम्नलिखित मतभेद है:
- यह डिफ़ॉल्ट रूप से आईडी क्षेत्र शामिल नहीं है।
- इसमें हाइपरलिंक्ड इडेंटिटीफ़िल्ल्ड का उपयोग करते हुए एक यूआरएल फ़ील्ड शामिल है।
- रिलेशनशिप प्राथमिकKeyRelatedField के बजाय हाइपरलिंक्ड रेलेटेड फ़ील्ड का उपयोग करते हैं।
एक साधारण उदाहरण:
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')
बैश> http -एक व्यवस्थापक: YourPassword http://127.0.0.1:8000/users/
"results": [
{
"email": "[email protected]",
"groups": [
"http://127.0.0.1:8000/groups/1/",
"http://127.0.0.1:8000/groups/2/"
],
"url": "http://127.0.0.1:8000/users/1/",
"username": "admin"
}
]
लेकिन अगर आप
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')
बदल परिणाम होगा:
HyperlinkedModelSerializers कि ध्यान दिया जाना चाहिए की
"results": [
{
"email": "[email protected]",
"groups": [
1,
2
],
"url": "http://127.0.0.1:8000/users/1/",
"username": "admin"
}
]
अच्छा जवाब, मैं केवल एक चीज जोड़ूंगा: आपके संसाधनों में हाइपरलिंक्स का उपयोग करके आपके वेब एपीआई का उपयोग करके किसी भी डेवलपर के लिए यह आसान हो जाएगा। अगर वे पूरे संसाधन यूआरआई देख सकते हैं तो उन्हें – xleon