2012-11-14 30 views
16

मैं अभी एक वेबएपीआई के लिए क्लाइंट कार्यान्वयन लिखना शुरू कर रहा हूं जिसे मैं वर्तमान में बना रहा हूं। एपीआई पहले ही हैटियोस को नियोजित करता है इसलिए मैं ग्राहक को तदनुसार लिख रहा हूं। मैं क्लाइंट के लिए आधार के रूप में RestSharp का उपयोग कर रहा हूं। ("https://myapi/authorize") प्राधिकरण और पहुँच के लिए अनुरोध टोकन (-हैटोस रिलायंस - अभी तक कोई मानक?

ग्राहक निर्माण समय ("https://myapi/start") जो उस पर एक अनुरोध आग और उसके बाद अन्य उपलब्ध संसाधनों के लिए यूआरआई का एक सेट पारित हो जाता है पर API बेस यूआरएल पारित हो जाता है एपीआई पर सुरक्षित संसाधनों में कॉल करने के लिए इसे अधिकृत करने के लिए "https://myapi/tokens")।

प्रश्न यह है कि लौटा हाइपर्मियाडिया में rel = "" आवश्यकताओं के लिए अभी तक कोई मानक तैयार किया गया है?

उत्तर

10

मेरा मानना ​​है कि Hypertext Application Language (एचएएल) एक मसौदा मानक है - हाइपरमीडिया के बीच इन लिंक को मानकीकृत करने का प्रयास कर रहा है।

यह

एक एक्सएमएल है मसौदा JSON विनिर्देश http://tools.ietf.org/html/draft-kelly-json-hal-03

एचएएल विनिर्देश लागू करता है "href" "लक्ष्य IRI" वेब लिंक करना विनिर्देश में परिभाषित का पालन हो (RFC 5988) के लिए एक लिंक है की एचएएल का उपयोग कर सी # यहाँ कार्यान्वयन https://github.com/tavis-software

भी ऊपर ही GitHub भंडार एक उदाहरण आरएफसी का नेट कार्यान्वयन 5988.

4

यह आईईटीएफ प्रस्तावित मानक RFC5988 document विभिन्न प्रकार के लिंक रिलेशनशिप और प्रस्तावित उपयोगों का वर्णन करता है। इसका फोकस HTTP लिंक हेडर विनिर्देश पर है लेकिन इसमें अन्य लिंक संबंध प्रकारों की चर्चा भी शामिल है। कुछ (सबसे?) आरएफसी की तरह, इसे पढ़ने से आपको अधिक उलझन में छोड़ दिया जा सकता है लेकिन लंबे समय तक प्रयास के लायक है। क्या यह जवाब देगा कि आपके प्रश्न में दोहरे उद्धरणों के बीच क्या रखा जाए? शायद नहीं, लेकिन कम से कम आपको अपने विकल्पों का मार्गदर्शन करने के लिए कुछ विचार मिलेंगे।

+0

मैं जहां संभव हो आरएफसी से बचने की कोशिश करता हूं;) केवल मजाक कर रहा है, हालांकि मुझे खुशी है कि मैं अकेला नहीं हूं जो हमेशा उत्तर से अधिक प्रश्नों से दूर आता है। – Jammer

2

एचएएल बहुत पूर्णांक लगता है वास्तव में eresting।

किसी और के लिए इस विषय को देखने के लिए या HATEOAS HAL ब्राउज़र एक जरूरी है। नीचे दिए गए लिंक पर की जाँच करें:

The Hal Browser on Heroku

8

Web Linking spec, RFC5988, के रूप में एक और जवाब में बताया गया है, लिंक संबंधों के कुछ विभिन्न प्रकार परिभाषित करता है। लेकिन यह एक लिंक संबंध रजिस्ट्री बनाने और आगे लिंक संबंध पंजीकरण की अनुमति देने के लिए आईएएनए को भी निर्देश देता है। वह रजिस्ट्री, जो सार्वजनिक लिंक संबंधों की निश्चित सूची है, iana.org/assignments/link-relations पर उपलब्ध है और नए रिश्तों को पंजीकृत किया जाएगा क्योंकि अपडेट किया जाएगा।

HTTP APIs में सामान्य संबंधों में शामिल हैं:

  • start एक संग्रह से (वापस एपीआई प्रारंभ बिंदु के लिए हर संसाधन से अंक)
  • item (अंक एक आइटम, जैसे एक ट्विटर उपयोगकर्ता पृष्ठ से ट्वीट)
  • collection (item के विपरीत) को
  • previous (इन अगले चार पृष्ठवार संसाधन, उदाहरण के लिए कर रहे हैंसंग्रह या बहु-पृष्ठ लेख)
  • next
  • first
  • last
  • create-form (एक संसाधन का वर्णन करता है कि नया संग्रह आइटम बनाने का तरीका है, जैसे एक 'नए आइटम' HTML या XForms फार्म का एक संग्रह से अंक)
  • edit-form (संपादन है कि आइटम, जैसे एक संपादित ट्वीट बटन)

हैं के लिए एक फार्म के लिए एक आइटम से अंक आपकी वांछित संबंध उस सूची में कुछ भी शामिल नहीं है, तो आपका संबंध एक यूआरआई होना चाहिए। इसके अलावा, यह सलाह दी जाती है कि यूआरआई को आपके नियंत्रण में किसी डोमेन पर एक डीरफ्रेंस करने योग्य http यूआरएल बनाया जाए ताकि एपीआई क्लाइंट रिलेशनशिप के लिए प्रलेखन देख सकें, उदा। "Http: //www.example.com/link-relations#tweets"। आम तौर पर, आपका एपीआई स्टार्ट पॉइंट संग्रह की एक सूची होगी, प्रत्येक कस्टम लिंक रिलेशनशिप के साथ होगा जो बताता है कि प्रत्येक संग्रह में किस प्रकार के संसाधन शामिल हैं।