2012-06-11 16 views
6

क्या आरईएसटी जीईटी क्वेरी के लिए प्रोजेक्शन निर्दिष्ट करना आरईएसटी सिद्धांत का उल्लंघन करता है और/या यह एक अच्छा अभ्यास है ??
पर विचार करें /person?fields=fname,lname, address जैसी API, इस हो सकता है क्योंकि व्यक्ति एक बड़ा मॉडल है और मेरे वर्तमान आवश्यकता के लिए मैं केवल दिए गए क्षेत्रों (जैसे कि मैं एक यूआई ग्रिड बनाने रहा हूँ)एक आरईएसटी जीईटी क्वेरी के लिए प्रक्षेपण निर्दिष्ट करना

+0

यह एक बहुत अच्छा अभ्यास है, यह हर अनुरोध पर भारी वस्तुओं को वापस भेजने से कहीं बेहतर है। –

उत्तर

3

यह पूरी तरह से एक नया परिभाषित करने के लिए ठीक है का मान की आवश्यकता होती है संसाधन अगर वर्तमान लोग जो चाहते हैं उसका समर्थन नहीं करते हैं। यह ठीक है कि आरईएसटी कैसे काम करता है।

तो आपके मामले में /person?fields=fname,lname, address यूआरआई परिभाषा पूरी तरह से मान्य है।

ध्यान दें कि यूआरआई संरचना कोई फर्क नहीं पड़ता है, आपको उन ग्राहकों को लिंक प्रदान करना होगा जहां आप यूआरआई टेम्पलेट और चर का वर्णन करते हैं।

{ 
    "_links": { 
     "/meta/person/list": { 
      "href": "/person{?fields}", 
      "vars": { 
       "fields": { 
        "required": false, 
        "composition": [ 
         "fname": { 
          "meta": "/meta/person/fname" 
         }, 
         "lname": { 
          "meta": "/meta/person/lname" 
         }, 
         "address": { 
          "meta": "/meta/person/address", 
          "alternatives": { 
           "href": "/locations", 
           "meta": "/meta/locations" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 

जहां /meta प्रकार और प्रत्येक पैरामीटर के लेबल का वर्णन में:

प्राप्त/मेटा/व्यक्ति/fname

तो तुम इस तरह एक लिंक कुछ (काल्पनिक हाइपरमीडिया JSON प्रारूप) लौटना चाहिए
{ 
    "type": "string", 
    "label": "First name", 
    "_links": { 
     "self": { 
      "href": "/meta/person/fname" 
     } 
    } 
} 

OFC। ग्राहक के साथ आपका पहला कदम पूरे मेटा या कम से कम अक्सर उपयोग किए जाने वाले हिस्सों को प्राप्त करना चाहिए। लिंक को संसाधित करके, ग्राहक केवल मेटा विवरण और यह विशेष हाइपरमीडिया JSON प्रारूप को समझने में सक्षम होना चाहिए। यूआरआई संरचना पूरी तरह से अप्रासंगिक है, इसे समझने के लिए केवल मेटा का उपयोग करना चाहिए कि लिंक क्या है, और इसका उपयोग कैसे करें।

दुर्भाग्यवश हमारे पास JSON प्रतिक्रिया में लिंक का वर्णन करने के तरीके के बारे में वर्तमान समय में मानक नहीं है। Hydra + Json-LD, HAL, HyperSchema, आदि जैसे हाइपरमीडिया प्रारूप हैं ... लेकिन afaik। उनमें से कोई भी अभी तक एक मानक नहीं है। (शायद हाइड्रा आरडीएफ vocab एक बनने के सबसे नज़दीक है, लेकिन यह निश्चित रूप से उत्पादन तैयार नहीं है। जेसन-एलडी पहले से ही आरडीएफ का प्रतिनिधित्व करने का एक मानक तरीका है।)

अब यदि आपके क्लाइंट में इसे कैसे बनाया जाए तो इसे हार्डकोड किया जाए यूआरआई और इसका क्या अर्थ है, तो यह एक आरईएसटी ग्राहक नहीं है, क्योंकि इस तरह की सेवाएं/ग्राहक uniform interface/HATEOAS आरईएसटी की बाधा का उल्लंघन करते हैं। ऑप्टिकल फाइबर केबल। आजकल पीपीएल। रीस्ट, रीस्टफुल, एपीआई के रूप में सबकुछ कॉल करें, भले ही वे इस विषय के बारे में जॉन स्नो जितना जानते हों। Btw। यदि आप अपने वेब एप्लिकेशन को आरईएसटी तरीके से लागू नहीं करना चाहते हैं तो कोई त्रासदी नहीं है, यह केवल आपकी आवश्यकताओं पर निर्भर करती है। उदाहरण के लिए यदि आपके आवेदन में बहुत से उपयोगकर्ता और तृतीय पक्ष डेवलपर नहीं होंगे, तो इससे कोई फर्क नहीं पड़ता कि आप कौन सी पथ चुनते हैं।

संबंधित मुद्दे