क्या किसी RESTful API को फ़ाइलें, या बस एक स्थान वापस करने में सक्षम होना चाहिए


12

यह मुझे कुछ समय के लिए हैरान कर रहा है।

उदाहरण के लिए, हमारे पास एक REST API है जो JSON को सिस्टम, उपभोग और निर्माण के लिए बुनियादी सामग्री प्रदान करता है। इस अंतिम बिंदु पर यह चित्र और विवरण के लिए एक URL का उत्पादन करता है, और इस प्रकार पाया जाता है: // localhost / myApi / चित्र 1

{
    id: 1,
    description: "This is a pretty picture of a daisy",
    URL: <OUR URL>
}

अब Our_URL को इस बिंदु पर उदाहरण के लिए API पर किसी स्थान पर जाना चाहिए // localhost / myApi / files / Pictures / 1 जो JPG लौटाता है (API के पीछे का अनुप्रयोग फ़ाइल की भौतिक सामग्री को पढ़ता है और फिर इसे क्लाइंट को वापस भेज देता है। )। यह स्पष्ट रूप से शेष एपीआई से अलग है जो जेएसएन प्रतिक्रियाओं का उत्पादन कर रहा है और वास्तविक फ़ाइल के पढ़ने और स्ट्रीमिंग से ओवरहेड होगा।

वैकल्पिक रूप से Our_URL को REST सेवा के दायरे से बाहर के URL की ओर इंगित करना चाहिए, इसलिए //localhost/files/pictures/1.jpg जहाँ यह फ़ाइल को सीधे पढ़ता है।

तो सवाल यह है:

क्या किसी RESTful API को फ़ाइलों को वापस करने में, या सिर्फ एक स्थान पर होना चाहिए?


1
आपको महसूस होता है कि "क्लाइंट किसी URL और सर्वर से सामान वापस करने के लिए अनुरोध करते हैं", क्या सही है, इसका सामान्य विवरण क्या है? संपूर्ण विचार यह है कि REST बहुत ही शिथिल-परिभाषित है और लगभग किसी भी URL- आधारित पुनर्प्राप्ति योजना के अनुकूल होने में सक्षम है।

जवाबों:


17

RESTful सेवा को API के उपयोगकर्ताओं को संसाधन उपलब्ध कराने चाहिए । संसाधनों में विभिन्न प्रारूप हो सकते हैं, जो JSON या XML से JPEG और HTML तक होते हैं।

यहां तक ​​कि एक आवश्यकता, या यहां तक ​​कि अपेक्षा भी नहीं है, कि एक एकल एपीआई केवल एक प्रारूप के संसाधनों का कार्य करता है। URI पर JSON दस्तावेज़ /myApi/pictures/1और JPEG फ़ाइल को URI के रूप में प्रस्तुत करने में कुछ भी गलत नहीं है /myApi/files/pictures/1
अधिक चरम मामले में, JSON विवरण और JPEG फ़ाइल दोनों को एक ही URL से सेव करना संभव है, यह उस प्रारूप पर निर्भर करता है, जिसके लिए अनुरोधकर्ता पूछता है।


7

यूआरआई वापस करने में आपको एक समस्या यह होगी कि एक पुराना पुराना फ़ाइल सर्वर सुरक्षा नहीं कर सकता है। इसलिए यदि आपको किसी प्रकार की सीमा को करने की आवश्यकता है, जो किसी फ़ाइल तक पहुंच सकता है, तो आपको इसे सीधे REST API में वापस करने में सक्षम होने की आवश्यकता होगी (या नहीं, यदि उपयोगकर्ता के पास अधिकार नहीं हैं, तो फ़ाइल सही अवस्था में नहीं, आदि)।

अन्यथा, सादे पुराने URI को लौटाने और एक समर्पित CDN पर जाने का प्रावधान, सरलता, और स्केलेबिलिटी के आसपास बहुत सारे लाभ हैं - यह मानते हुए कि आपको बस इतना करना है।


सैद्धांतिक पहलू एक बहुत अच्छा बिंदु है, कुछ मैंने कभी नहीं सोचा था।
क्रेजी डिनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.