एपीआई कुंजी - सामग्री या हेडर में


14

फिलहाल एक एपीआई पर काम कर रहा है और सिर्फ इस पर राय जुटाना चाहता है कि एपीआई कुंजी को प्रसारित करने के लिए सबसे अच्छी जगह कहां होनी चाहिए। मुझे पता है कि URL में नहीं जाना चाहिए, यह अनुरोध शीर्ष लेख या संदेश निकाय छोड़ देता है।

अगर मैंने इसे हेडर में रखा है तो मैं इसे खींचने के लिए एक सामान्य विधि के साथ आ सकता हूं जिसे सभी सेवाओं में उपयोग किया जा सकता है, हालांकि मुझे जो कल्पना सौंपी गई है वह इसे शरीर में चाहता है (यानी एक JSON स्ट्रिंग में भाग के रूप में शामिल है) POST निकाय में क्रमबद्ध वस्तु)।


साथ ही ध्यान दें कि सभी अनुरोध प्रकारों में एक निकाय नहीं होना चाहिए और यदि आप किसी निकाय के बिना किसी अनुरोध को मान्य करना चाहते हैं, तो कुंजी को हेडर में रखना होगा।
30

जवाबों:


11

HTTP में, इसके लिए एक Authorizationहेडर है।

हालांकि आमतौर पर इसका उपयोग उपयोगकर्ताओं को क्रेडेंशियल प्रदान करने के लिए किया जाता है, एपीआई के मामले में, इसमें क्लाइंट की आईडी और संबंधित एपीआई कुंजी हो सकती है।

इसके कई लाभ हैं:

  • विभिन्न चौखटे से समर्थन। Authorizationप्रमाणीकरण करने के लिए कई चौखटे हेडर की अपेक्षा करेंगे । इसका उपयोग नहीं करने पर कस्टम फ्रेमवर्क के साथ उन रूपरेखाओं को खिलाने के लिए अतिरिक्त कोड लिखने के लिए मजबूर किया जाएगा।

  • विभिन्न उपकरणों से समर्थन। उदाहरण के लिए CURL।

  • कम "डब्ल्यूटीएफ मैं इस एपीआई कुंजी को कहां ढूंढता / लगाता हूं?" टीम में शामिल होने वाले नए डेवलपर्स से (या आपके एपीआई के लिए नए ग्राहकों को डिजाइन करने वाले डेवलपर्स)।

  • फिर आप इस तरह के रूप HTTP स्थिति कोड परिभाषाओं का उपयोग कर सकते हैं 401 Unauthorized, जिसके लिए :

    प्रतिक्रिया में डब्ल्यूडब्ल्यूडब्ल्यू-ऑथेंटिकेट हेडर फ़ील्ड शामिल होना चाहिए [...] क्लाइंट मे एक उपयुक्त प्राधिकरण हेडर फ़ील्ड के साथ अनुरोध को दोहराता है।

इसे अनुरोध के शरीर में ले जाने से दर्द जल्दी हो सकता है। अधिकांश चौखटे और उपकरण एक अनुरोध में एक शरीर जोड़ने के लिए इसे बहुत सरल नहीं बनाते हैं, जो आपके एपीआई को और अधिक कठिन बना सकता है जितना कि इसे होना चाहिए।

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