प्रतिष्ठित संदर्भ अभ्यावेदन - शब्दार्थ लिंक बनाम उरी


9

हम अपने ग्राहक की खाता जानकारी खोलने के लिए एक RESTful API डिज़ाइन कर रहे हैं। हमारे पास ऐसे निरूपण हैं जिनमें वर्तमान संसाधन से संबंधित अन्य संसाधनों के संदर्भ हैं। यह कई सर्वोत्तम प्रथाओं से है जिन्हें हम सार्वजनिक एपीआई के साथ-साथ प्रकाशित सामग्रियों में खोजने में सक्षम थे। अभ्यावेदन XML या JSON हो सकते हैं।

उदाहरण के लिए एक खाता संसाधन के लिए हमारे पास खाते के पते के संदर्भ होंगे और पृष्ठबद्ध सूची संसाधन के लिए, हमारे पास पहले, अगले और पिछले पृष्ठों के संदर्भ होंगे।

एपीआई को पहली बार <link title="" rel="" href="" />एक ओ'रिली किताब में वर्णित अर्थ लिंक का उपयोग करके और नेटफ्लिक्स और गूगल द्वारा एपीआई में उपयोग किया गया था। जब ऑटोमेशन सूट लिखने के लिए हमारे क्यूए इंजीनियरों के लिए समय आया, तो उन्हें लिंक को हटाने में समस्या थी। हमने अब सरल uri स्ट्रिंग तत्वों का सुझाव दिया है जिनका उपयोग Facebook और Twitter द्वारा API में किया गया है।

हमारे क्यूए enginners के बाद से उनके deserialization मुद्दों को हल किया है, लेकिन मैं अभी भी अर्थ लिंक के साथ वर्तमान एपीआई युक्ति के उपयोग में आसानी की चिंता है। हमारे API को मुख्य रूप से हमारे ग्राहकों और कुछ तृतीय-पक्ष भागीदारी द्वारा उपभोग किया जाएगा और हम REST गए हैं क्योंकि पिछले XML-RPC API हमारे उपभोक्ताओं के लिए बहुत मुश्किल था।

tl; डॉ;

सवाल:

क्या किसी ने भी जिसने अर्थ लिंक को उपभोक्ता समस्याओं के अनुभवी कठिनाई के साथ जोड़ा है?


अद्यतन (6/21): मैंने सिमेंटिक लिंक के साथ रहने का फैसला किया है और आशा है कि भ्रम की स्थिति थी। एपीआई को कुछ उपभोक्ताओं के साथ रहने के बाद हम अपने अनुभवों के साथ सवाल का जवाब देने के लिए याद रखने की कोशिश करेंगे।


संपादित करें: उदाहरण जोड़ें

शब्दार्थ खाता JSON:

{
    "username": "paul",
    "links": [
        {
            "title": "addresses",
            "rel": "related",
            "href": "http://example.com/account/paul/addresses"
        },
        {
            "title": "history",
            "rel": "related",
            "href": "http://example.com/account/paul/history"
        }
    ]
}

शब्दार्थ खाता XML:

<account>
    <username>paul</username>
    <link title="addresses" rel="related" href="http://example.com/account/paul/addresses" />
    <link title="history" rel="related" href="http://example.com/account/paul/history" />
</account>

सरल खाता JSON:

{
    "username": "paul",
    "addresses": "http://example.com/account/paul/addresses"
    "history": "http://example.com/account/paul/history"
}

सरल खाता XML:

<account>
    <username>paul</username>
    <addresses>http://example.com/account/paul/addresses</addresses>
    <history>http://example.com/account/paul/history</history>
</account>

क्या आप हमें मूल सिमेंटिक लिंक के ठोस उदाहरण दे सकते हैं, और "सरल यूरि स्ट्रिंग तत्व"? यह बहुत स्पष्ट नहीं है कि आप उन शब्दों से क्या मतलब है, विशेष रूप से उत्तरार्द्ध।
टॉम एंडरसन

ठोस उदाहरणों के साथ अद्यतन किया गया। अगर यह मदद करता है तो मैं भी पगतिबद्ध सूचियों / संग्रहों के लिए उदाहरण जोड़ सकता हूं।
पॉल

जवाबों:


3

मैं बल्कि होगा:

{
  "username": "paul",
  "address": {
      "rel": "related",
      "href": "http://example.com/account/paul/addresses"
  },
  "history" {
      "rel": "related",
      "href": "http://example.com/account/paul/history"
  }
}

यह एरे को समाप्त करता है और ऑब्जेक्ट को ट्रैवर्सेबल बनाता है (जैसे कि एक अकाउंट के एड्रेस को जानने के लिए जैसे कि जावास्क्रिप्ट में सभी लिंक के माध्यम से लूप करने और एक एड्रेस की तरह दिखने वाले को ढूंढने के बजाय account.address.href कह सकते हैं)। अनुरूप XML:

<account>
    <username>paul</username>
    <addresses>
        <link rel="related" href="http://example.com/account/paul/addresses" />
    </addresses>
    <history>
        <link rel="related" href="http://example.com/account/paul/history" />
    </history>
</account>

तुम क्या सोचते हो?


1

सिमेंटिक वेब का सपना है कि लिंक स्वचालित रूप से खोजे जा सकते हैं। चूंकि कठिन हिस्सा लिंकेज को समझ रहा है और उनका उपयोग कैसे करना है, मेरा मानना ​​है कि शब्दार्थ जानकारी इतनी उपयोगी नहीं है।

सिमेंटिक एक्सएमएल रूपों की ओर मेरा थोड़ा झुकाव है क्योंकि "रिले" विशेषता में अंतरिक्ष-अलग-अलग क्षेत्रों की परिभाषित एक्स्टेंसिबिलिटी तंत्र है, और "लिंक" अच्छी तरह से समझा जाता है।

ऐसे API के उपभोक्ता के रूप में, मुझे बहुत अधिक अंतर दिखाई नहीं देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.