दस्तावेज़ पर जाएँ
Java

कॉन्फ़िगरेशन

क्लाइंट का हर विकल्प, वह एनवायरनमेंट से क्या पढ़ता है, और क्या अस्वीकार करता है।

विकल्प

Client.java
OpenEmail client = OpenEmail.builder()    .apiKey(System.getenv("OPENEMAIL_API_KEY"))    .baseUrl("https://api.openemail.uk")    .timeout(Duration.ofSeconds(30))    .maxRetries(2)    .header("X-Team", "billing")    .build(); System.out.println(client.mode());
विकल्पयह क्या करता है
apiKeyवर्कस्पेस API कुंजी, जो oe_live_ या oe_test_ से शुरू होती है। किसी कॉल पर देने से वह केवल उसी कॉल के लिए दूसरी कुंजी से काम करती है।
accessTokenएक OAuth एक्सेस टोकन, उस ऐप के लिए जिसे किसी व्यक्ति ने कनेक्ट किया है। कुंजी या टोकन में से एक पास करें, दोनों नहीं।
accessToken(Supplier<String>)एक फ़ंक्शन जो एक्सेस टोकन लौटाता है। यह हर अनुरोध से पहले चलता है, इसलिए टोकन को नया करने की जगह यही है।
baseUrlAPI का ओरिजिन। localhost:2222 जैसे सिर्फ़ होस्ट वाले मान में उसकी स्कीम जोड़ दी जाती है।
httpClientआपका अपना java.net.http.HttpClient, किसी प्रॉक्सी, कस्टम SSLContext या एक्ज़ीक्यूटर के लिए।
timeoutएक प्रयास कितना समय ले सकता है। डिफ़ॉल्ट 30 सेकंड है, शून्य इसे बंद कर देता है, और अपलोड कम से कम दस मिनट प्रतीक्षा करते हैं।
maxRetriesविफल अनुरोध को कितनी बार दोबारा आज़माया जाता है। डिफ़ॉल्ट 2 है, और 0 एक बार भेजता है।
userAgentUser-Agent हेडर को बदलता है, जो openemail-java/ और संस्करण से बनता है।
header, headersहर अनुरोध में एक हेडर जोड़ता है।
disableUpdateNoticeस्टैंडर्ड एरर पर आने वाली वह एक पंक्ति बंद करता है जो बताती है कि नया संस्करण आ गया है। OPENEMAIL_DISABLE_UPDATE_NOTICE=1 भी यही करता है।

जो कुछ आप छोड़ देते हैं वह एनवायरनमेंट से पढ़ा जाता है: OPENEMAIL_API_KEY, फिर OPENEMAIL_ACCESS_TOKEN, और OPENEMAIL_BASE_URL। client.mode() बताता है कि कुंजी live कुंजी है या test कुंजी।

कॉल पर विकल्प

क्वेरी पैरामीटर और कॉल की सेटिंग एक RequestOptions में जाती हैं, जो आर्ग्युमेंट के बाद पास किया जाता है। इसमें apiKey, idempotencyKey, timeout, limit और cursor के लिए मेथड हैं, और set बाकी हर विकल्प को उसी नाम से लेता है जो API इस्तेमाल करता है। हर मेथड वही विकल्प स्वीकार करता है जो उसकी संदर्भ प्रविष्टि में सूचीबद्ध हैं, और जो विकल्प लागू नहीं होता वह कुछ भी भेजे जाने से पहले अस्वीकार कर दिया जाता है।

AnotherWorkspace.java
RequestOptions options = RequestOptions.of("folder", "inbox")    .apiKey(System.getenv("OPENEMAIL_API_KEY"))    .timeout(Duration.ofSeconds(5))    .limit(50); Page threads = client.threads().list(options); System.out.println(threads.size());

एक RequestOptions अपरिवर्तनीय है: हर मेथड एक नया लौटाता है, इसलिए कोई साझा मान उस कोड से कभी नहीं बदल सकता जो उसमें कुछ जोड़ता है। थ्रेड को इंटरप्ट करने से प्रतीक्षा कर रही कॉल रुक जाती है।

क्लाइंट क्या अस्वीकार करता है

  • ऐसी कुंजी जो oe_live_ या oe_test_ से शुरू नहीं होती, और एक्सेस टोकन के साथ दी गई कुंजी।
  • सादे http: पर क्रेडेंशियल भेजना, जब तक सर्वर इसी मशीन पर localhost, किसी 127.x.x.x पते या ::1 पर न हो।
  • 0.0.0.0 पर बेस URL, जो वह पता है जिस पर सर्वर सुनता है। उसी पोर्ट के साथ 127.0.0.1 इस्तेमाल करें।
  • खाली id, या सिर्फ़ बिंदुओं से बना id, जिसे URL पार्सर हटा देगा।
  • किसी रीडायरेक्ट का पीछा करना। डिफ़ॉल्ट HTTP क्लाइंट कभी किसी रीडायरेक्ट का पीछा नहीं करता, इसलिए क्रेडेंशियल कभी किसी दूसरे होस्ट तक नहीं जाता।

किसी क्लाइंट, RequestOptions या एक्सेप्शन को प्रिंट करने पर क्रेडेंशियल कभी नहीं दिखता। कुंजी, टोकन और कस्टम हेडर के मान toString() से और क्लाइंट के लिखे हर संदेश से बाहर रखे जाते हैं।

बिना मेथड वाला एंडपॉइंट

client.raw().request किसी भी पाथ को क्लाइंट के क्रेडेंशियल, बेस URL, टाइमआउट और रीट्राई नीति के साथ कॉल करता है। पाथ एक ही / से शुरू होना चाहिए, और जो पाथ बेस URL के ओरिजिन से बाहर जाता है वह अस्वीकार कर दिया जाता है।

RawRequest.java
Object label = client.raw().request("POST", "/labels", Body.of("name", "Invoices")); System.out.println(label);