मुझे {id}
उप-संसाधनों के साथ यूआरएल के हिस्से को ओवरलैप करते हुए देखना पसंद नहीं है , क्योंकि id
सैद्धांतिक रूप से कुछ भी हो सकता है और इसमें अस्पष्टता होगी। यह विभिन्न अवधारणाओं (पहचानकर्ता और उप-संसाधन नाम) को मिला रहा है।
इसी तरह के मुद्दों अक्सर में देखा जाता है enum
स्थिरांक या संरचनाओं, जहां अलग अवधारणाओं उदाहरण के लिए मिश्रित (हैं फ़ोल्डर, आप फ़ोल्डर है जब Tigers
, Lions
और Cheetahs
, और फिर भी नामक फ़ोल्डर Animals
एक ही स्तर पर है - यह कोई मतलब नहीं रूप में एक के एक सबसेट है बनाता है अन्य)।
सामान्य तौर पर मुझे लगता है कि एंडपॉइंट का अंतिम नामित हिस्सा एकवचन होना चाहिए अगर यह एक बार में एक इकाई के साथ काम करता है, और बहुवचन अगर यह संस्थाओं की सूची से संबंधित है।
तो एक उपयोगकर्ता के साथ सौदा करने वाले अंतिम बिंदु:
GET /user -> Not allowed, 400
GET /user/{id} -> Returns user with given id
POST /user -> Creates a new user
PUT /user/{id} -> Updates user with given id
DELETE /user/{id} -> Deletes user with given id
फिर उपयोगकर्ताओं पर प्रश्न करने के लिए अलग संसाधन है, जो आम तौर पर एक सूची लौटाते हैं:
GET /users -> Lists all users, optionally filtered by way of parameters
GET /users/new?since=x -> Gets all users that are new since a specific time
GET /users/top?max=x -> Gets top X active users
और यहां एक उप-संसाधन के कुछ उदाहरण हैं जो एक विशिष्ट उपयोगकर्ता से संबंधित हैं:
GET /user/{id}/friends -> Returns a list of friends of given user
एक दोस्त बनाओ (कई लिंक से कई):
PUT /user/{id}/friend/{id} -> Befriends two users
DELETE /user/{id}/friend/{id} -> Unfriends two users
GET /user/{id}/friend/{id} -> Gets status of friendship between two users
कोई भी अस्पष्टता नहीं है, और संसाधन का बहुवचन या एकवचन नामकरण उपयोगकर्ता के लिए एक संकेत है कि वे क्या उम्मीद कर सकते हैं (सूची या वस्तु)। id
S पर कोई प्रतिबंध नहीं है , सैद्धांतिक रूप से यह संभव है कि new
उप-संसाधन नाम के साथ उपयोगकर्ता को ओवरलैप किए बिना आईडी के साथ संभव हो ।