लागू करने वाले एक बाकी एपीआई पर अनुमतियां मैं एक पृष्ठ ऐप में अनुमतियों को संभालने का सही तरीका जानने का प्रयास कर रहा हूं जो कई रीस्टफुल एपीआई से सीधे बात करता है, जो हैटोज़ को लागू करता है।HATEOAS
एक उदाहरण के रूप: "। मैं, देख सकते हैं शुरू करने और नौकरियों को थामने लेकिन उन्हें रोक नहीं अपने आवेदन के उपयोगकर्ता के रूप"
/jobs/{आईडी} प्राप्त और डाल स्वीकार करता है कौन सा:
अंतर्निहित बाकी एपीआई निम्न संसाधन है। प्राप्त एक नौकरी मॉडल वापस आती है और PUT रूप में एक अनुरोध शरीर के रूप में एक नौकरी मॉडल स्वीकार करता है:
{
"_links" : {
"self" : "/jobs/12345678"
}
"id" : 12345678,
"description" : "foo job",
"state" : "STOPPED"
}
स्वीकृत काम राज्यों जा सकता है: निष्क्रिय | चल रहा है | रोका गया | रोका हुआ।
आवश्यकता का कहना है कि मैं बटन यूआई पर करना होगा:,
स्टार्ट, रोकें बंद करो
... और केवल उपयोगकर्ता की अनुमतियों में लॉग इन के आधार पर प्रदर्शित करते हैं।
एपीआई परिप्रेक्ष्य से सर्वर पर अंतर्निहित तर्क के रूप में सबकुछ काम करता है यह सुनिश्चित करता है कि कोई अनुरोध किए जाने पर उपयोगकर्ता राज्य को स्थगित स्थिति में अपडेट नहीं कर सकता (एक 401 शायद वापस आ गया हो)।
उपयोगकर्ता की अनुमतियों के ऐप/UI को सूचित करने का सबसे अच्छा तरीका क्या है, इसलिए यह किसी भी बटन को छुपा सकता है जिसे उपयोगकर्ता को कार्रवाई करने की अनुमति नहीं है?
{
"_links" : {
"self" : "/permissions",
"jobs" : "/jobs"
}
"permissions" : {
"job" : ["UPDATE", "DELETE"],
"job-updates" : ["START", "PAUSE"]
}
}
या API परिवर्तन ताकि अनुमतियाँ HATEOS लिंक शायद कुछ की तरह में परिलक्षित होते हैं चाहिए::
{
"_links" : {
"self" : "/jobs/12345678",
"start" : "/jobs/12345678/state?to=RUNNING",
"pause" : "/jobs/12345678/state?to=PAUSED",
}
"id" : 12345678,
"description" : "foo job",
"state" : "DORMANT"
}
एपीआई, हो सकता है की तरह कुछ अनुमतियों की एक सूची प्रदान करते हैं चाहिए या इसे पूरी तरह से अलग तरीके से किया जाना चाहिए?
अद्यतन
मैं निम्न आलेख जो एक जवाब से पता चलता है मिल गया है: https://softwareengineering.stackexchange.com/questions/215975/how-to-handle-fine-grained-field-based-acl-permissions-in-a-restful-service
ध्वज के प्रशंसक नहीं, लेकिन उत्तर उत्तर के साथ सहमत हैं। उपलब्ध कार्यों को इंगित करने के लिए लिंक देना हैटियोस के प्रमुख लाभों में से एक है। एक वेब पेज की तरह, अगर कोई प्रविष्टि –
नहीं हटा सकता तो मैं कोई डिलीट बटन नहीं हूं, मैं ध्वज का प्रशंसक नहीं हूं। मुझे लगता है कि ज्यादातर मामलों में, ध्वज उपयुक्त नहीं है, लेकिन मैं देख सकता हूं कि क्यों कुछ मामलों में यह संभव हो सकता है। कभी-कभी प्रसंस्करण स्थिति के कारण एक क्रिया संभव नहीं है, उदाहरण के लिए। हालांकि, इस लिंक को इंगित करने के अन्य तरीके हैं (जैसे कि शरीर में एक विशेषता), और यदि लिंक वास्तव में उपयोग किया जाता है तो उचित अनुरोध कोड को किसी भी अनुरोध पर वापस कर रहा है। – basicallydan