التحقق من المستلم: أمثلة على رمز التحقق من البريد الإلكتروني
طائر
08/07/2020
البريد الإلكتروني
1 min read

النقاط الرئيسية
التحقق المستند إلى البيانات، وليس التكهن. تستخدم خدمة التحقق من المستلمين من Bird (المعروفة سابقًا باسم SparkPost) مليارات الأحداث الحقيقية لتسليم البريد وتفاعلاته لتحديد ما إذا كان عنوان البريد الإلكتروني صالحًا أو خطرًا أو غير قابل للتسليم أو يحتوي على خطأ مطبعي.
أذكى من فحوصات الصيغة. بخلاف الأدوات التقليدية المعتمدة على التعبيرات العادية، يستخدم هذا النموذج بيانات من العالم الحقيقي لتصنيف القابلية للتسليم ويقترح التصحيحات عبر ميزة
أهم النقاط في الأسئلة والأجوبة
ما هي التحقق من المستلم؟
إنه نظام التحقق من البريد الإلكتروني المدعوم من واجهة برمجة التطبيقات الخاصة بـ Bird والذي يصنف العناوين على أنها صحيحة، مُعرضة للخطر، محايدة، غير قابلة للتوصيل، أو خطأ مطبعي، مستفيدًا من بيانات من مليارات من أحداث التسليم في العالم الحقيقي.
كيف يختلف ذلك عن التحقق الأساسي من التركيب؟
تتحقق المدققون التقليديون من التنسيق فقط؛ نظام Bird يقيم البيانات الحية مثل معدلات الارتداد، مقاييس التفاعل، وأنماط التسليم لإجراء تنبؤات أكثر ذكاء.
ما نوع المعلومات التي تعيدها واجهة برمجة التطبيقات؟
تتضمن كل استجابة تحقق:
تصنيف الحالة (صحيح، محفوف بالمخاطر، إلخ)
رمز السبب (لماذا تم تصنيف العنوان)
تصحيح اختياري "هل كنت تقصد" للأخطاء الإملائية
بيانات وصفية مثل الأسعار، البلد، وحقول سبب الحالة
هل يمكنني التحقق من صحة البريد الإلكتروني بكميات كبيرة؟
نعم. يمكنك رفع قوائم كاملة في التطبيق على الويب أو استخدام واجهة برمجة التطبيقات للتحقق من العناوين الفردية برمجيا كجزء من سير العمل الخاص بك.
ما هي لغات البرمجة المدعومة؟
أمثلة رمزية متاحة لأكثر من اثني عشر لغة — بما في ذلك بايثون، Node.js، PHP، Go، C#، جافا، راست، وبيرل — تغطي كل من الأنظمة الحديثة والقديمة.
أين يجب أن أحتفظ بمفتاح واجهة برمجة التطبيقات الخاص بي؟
ادعم دائمًا الجانب الخادم باستخدام متغير بيئة مثل
SPARKPOST_API_KEY. لا تدمجه أبدًا في نصوص جانب العميل أو كود المتصفح.هل يمكن دمج هذا في سير العمل الآلي؟
بالتأكيد. يمكنك استخدام Flow Builder الخاص بـ Bird أو Azure Functions للتحقق من العناوين في الوقت الفعلي قبل تشغيل الأتمتة اللاحقة، مثل رسائل تأكيد البريد الإلكتروني أو تحديثات CRM.
لماذا يجب أن تهتم الشركات بدقة التحقق؟
تحسين التحقق عالي الجودة يعزز سمعة المرسل، ويمنع الارتدادات، ويزيد من عائد الاستثمار في الحملة من خلال ضمان وصول كل رسالة إلى صندوق بريد صالح.
ما هو التالي للمطورين؟
يدعو الطائر المجتمع للمساهمة بأمثلة لغة جديدة وتحسينات على الأمثلة الحالية، مما يساعد على توسيع إمكانية الوصول للتحقق في جميع أنحاء العالم.
تتوفر خدمة التحقق من المستلمين في SparkPost الآن لكل من العملاء الحاليين لـ SparkPost وللعملاء الجدد الذين لا يقصدون الإرسال. تستخدم هذه الخدمة تحليلًا قويًا مستندًا إلى البيانات على مليارات من أحداث الارتداد والتوصيل والتفاعل يوميًا لتدريب خوارزميتنا، مما يوفر لك واحدة من أقوى أدوات التحقق من صحة البريد الإلكتروني المدفوعة بالبيانات في السوق، حتى تتمكن من إرسال رسائل البريد الإلكتروني بشكل أكثر ذكاءً.
التحقق من المستلم في SparkPost التحقق من المستلم متاح الآن لكل من عملاء SparkPost الحاليين والعملاء الجدد الذين لا يرسلون. يعتمد على تحليل قوي قائم على البيانات لمليارات من أحداث الارتداد والتسليم والمشاركة يوميًا لتدريب خوارزمياتنا، ليقدم لك واحدًا من أقوى أدوات التحقق من البريد الإلكتروني المعتمدة على البيانات في السوق، حتى تتمكن من إرسال رسائل البريد الإلكتروني بذكاء. يمثل هذا أحدث تطور في تقنيات التحقق من البريد الإلكتروني، حيث يتجاوز الفحوصات البسيطة للقواعد النحوية إلى نهج متطور قائم على البيانات يقدم نتائج أكثر دقة.
تشرح هذه المقالة كيف يمكنك الاستفادة القصوى من البيانات التي ستتلقاها عن كل مستلم تم التحقق منه - سترى أننا نصنف العناوين إلى
التحقق من المستلم في SparkPost التحقق من المستلم متاح الآن لكل من عملاء SparkPost الحاليين والعملاء الجدد الذين لا يرسلون. يعتمد على تحليل قوي قائم على البيانات لمليارات من أحداث الارتداد والتسليم والمشاركة يوميًا لتدريب خوارزمياتنا، ليقدم لك واحدًا من أقوى أدوات التحقق من البريد الإلكتروني المعتمدة على البيانات في السوق، حتى تتمكن من إرسال رسائل البريد الإلكتروني بذكاء. يمثل هذا أحدث تطور في تقنيات التحقق من البريد الإلكتروني، حيث يتجاوز الفحوصات البسيطة للقواعد النحوية إلى نهج متطور قائم على البيانات يقدم نتائج أكثر دقة.
تشرح هذه المقالة كيف يمكنك الاستفادة القصوى من البيانات التي ستتلقاها عن كل مستلم تم التحقق منه - سترى أننا نصنف العناوين إلى
التحقق من المستلم في SparkPost التحقق من المستلم متاح الآن لكل من عملاء SparkPost الحاليين والعملاء الجدد الذين لا يرسلون. يعتمد على تحليل قوي قائم على البيانات لمليارات من أحداث الارتداد والتسليم والمشاركة يوميًا لتدريب خوارزمياتنا، ليقدم لك واحدًا من أقوى أدوات التحقق من البريد الإلكتروني المعتمدة على البيانات في السوق، حتى تتمكن من إرسال رسائل البريد الإلكتروني بذكاء. يمثل هذا أحدث تطور في تقنيات التحقق من البريد الإلكتروني، حيث يتجاوز الفحوصات البسيطة للقواعد النحوية إلى نهج متطور قائم على البيانات يقدم نتائج أكثر دقة.
تشرح هذه المقالة كيف يمكنك الاستفادة القصوى من البيانات التي ستتلقاها عن كل مستلم تم التحقق منه - سترى أننا نصنف العناوين إلى
سي شارب
أنا أقل دراية بـ C# – بالنسبة لي، تبدو مشابهة جدًا لجافا، بدلاً من C. لقد تمكنت من تجميع هذا مع اتباع الأمثلة الموضحة في مكتبة الطلبات System.Net.Http.
يمكن أن ينشئ Postman كود أمثلة بشكل تلقائي باستخدام RestSharp، إذا كنت تفضل ذلك.
أنا أقل دراية بـ C# – بالنسبة لي، تبدو مشابهة جدًا لجافا، بدلاً من C. لقد تمكنت من تجميع هذا مع اتباع الأمثلة الموضحة في مكتبة الطلبات System.Net.Http.
يمكن أن ينشئ Postman كود أمثلة بشكل تلقائي باستخدام RestSharp، إذا كنت تفضل ذلك.
أنا أقل دراية بـ C# – بالنسبة لي، تبدو مشابهة جدًا لجافا، بدلاً من C. لقد تمكنت من تجميع هذا مع اتباع الأمثلة الموضحة في مكتبة الطلبات System.Net.Http.
يمكن أن ينشئ Postman كود أمثلة بشكل تلقائي باستخدام RestSharp، إذا كنت تفضل ذلك.
طلبات API
في تطبيق SparkPost على الويب، يمكنك سحب وإفلات قائمة كاملة للتحقق. يمكنك أيضًا استخدام واجهة برمجة التطبيقات للتحقق من العناوين الفردية، بحيث يمكنك دمج التحقق مباشرة في سير عمل إدخال العناوين الخاص بك.
قبل فترة، توصلنا إلى أداة سطر أوامر بايثون باستخدام هذه الواجهة. تحدثنا حول ما يجب علينا القيام به للغات الأخرى - وهنا نحن! لنبدأ.
هذا مجلد مستودع Github يحتوي على أمثلة لنداءات واجهة برمجة تطبيقات التحقق من المستلمين تعمل بحوالي عشرة لغات مختلفة. نحن نحاول تغطية أكثر اللغات التطبيقية شعبية.
الطريقة الشائعة للعمل من خلال جميع هذه الأمثلة هي:
احصل على مفتاحك من متغير البيئة
SPARKPOST_API_KEYقم بعمل نداء API إلى
/api/v1/recipient-validation/single/للتحقق من مستلماستقبل ردًا على شكل سلسلة، تحتوي على بيانات بتنسيق JSON مع النتيجة
اطبع النتيجة
اللغة | مكتبة HTTP المستخدمة | أين يحدث التحقق | الاعتبارات الملحوظة |
|---|---|---|---|
Bash / Curl | curl CLI | استخدام الطرفية فقط | لا يوجد تحليل لرد JSON |
PHP | curl_setopt | من جهة الخادم | خيارات مكتبة متعددة متاحة |
Python | requests | تطبيقات السكربت أو الواجهة الخلفية | تحويل JSON إلى dict تلقائيًا |
Node.js | axios (موصى به) | الجانب الخادم فقط | تجنب الكشف عن مفاتيح API على جانب العميل |
Go | net/http + encoding/json | خدمات الواجهة الخلفية | سلامة نوع قوية مع بنى مخصصة |
C# | System.Net.Http | تطبيقات الخادم | يمكن أن ينشئ Postman نسخة من RestSharp |
Java | HttpURLConnection | خدمات الخادم | مطولة ولكن يمكن نشرها على نطاق واسع |
C / C++ | libcurl + OpenSSL | أدوات على مستوى الأنظمة | مطالب السلامة في الذاكرة المطلوبة |
Lua | luasocket + luasec | رفيق السكربت | يمكنه دفق الردود المجزأة بكفاءة |
Perl | LWP::UserAgent | أنظمة قديمة | تحليل JSON اختياري |
VB.net | Visual Studio SDK | تطبيقات وحدة التحكم في Windows | التهيئة لمتغير البيئة مطلوبة |
Rust | reqwest + tokio async | خدمات الويب الحديثة | يحتاج إلى اللامتزامنة لمعالجة الرؤوس |
SparkPost لديها مكتبات لبعض، ولكن ليس لجميع اللغات التي تم تناولها هنا. قررنا كتابة هذه الأمثلة "محلية" بدلاً من ذلك، حتى نتمكن من أ) تغطية المزيد من اللغات، ب) إظهار مدى بساطة الشفرة الأساسية، وج) تمكينك من رؤية بوضوح التشابهات والاختلافات بين اللغات.
في تطبيق SparkPost على الويب، يمكنك سحب وإفلات قائمة كاملة للتحقق. يمكنك أيضًا استخدام واجهة برمجة التطبيقات للتحقق من العناوين الفردية، بحيث يمكنك دمج التحقق مباشرة في سير عمل إدخال العناوين الخاص بك.
قبل فترة، توصلنا إلى أداة سطر أوامر بايثون باستخدام هذه الواجهة. تحدثنا حول ما يجب علينا القيام به للغات الأخرى - وهنا نحن! لنبدأ.
هذا مجلد مستودع Github يحتوي على أمثلة لنداءات واجهة برمجة تطبيقات التحقق من المستلمين تعمل بحوالي عشرة لغات مختلفة. نحن نحاول تغطية أكثر اللغات التطبيقية شعبية.
الطريقة الشائعة للعمل من خلال جميع هذه الأمثلة هي:
احصل على مفتاحك من متغير البيئة
SPARKPOST_API_KEYقم بعمل نداء API إلى
/api/v1/recipient-validation/single/للتحقق من مستلماستقبل ردًا على شكل سلسلة، تحتوي على بيانات بتنسيق JSON مع النتيجة
اطبع النتيجة
اللغة | مكتبة HTTP المستخدمة | أين يحدث التحقق | الاعتبارات الملحوظة |
|---|---|---|---|
Bash / Curl | curl CLI | استخدام الطرفية فقط | لا يوجد تحليل لرد JSON |
PHP | curl_setopt | من جهة الخادم | خيارات مكتبة متعددة متاحة |
Python | requests | تطبيقات السكربت أو الواجهة الخلفية | تحويل JSON إلى dict تلقائيًا |
Node.js | axios (موصى به) | الجانب الخادم فقط | تجنب الكشف عن مفاتيح API على جانب العميل |
Go | net/http + encoding/json | خدمات الواجهة الخلفية | سلامة نوع قوية مع بنى مخصصة |
C# | System.Net.Http | تطبيقات الخادم | يمكن أن ينشئ Postman نسخة من RestSharp |
Java | HttpURLConnection | خدمات الخادم | مطولة ولكن يمكن نشرها على نطاق واسع |
C / C++ | libcurl + OpenSSL | أدوات على مستوى الأنظمة | مطالب السلامة في الذاكرة المطلوبة |
Lua | luasocket + luasec | رفيق السكربت | يمكنه دفق الردود المجزأة بكفاءة |
Perl | LWP::UserAgent | أنظمة قديمة | تحليل JSON اختياري |
VB.net | Visual Studio SDK | تطبيقات وحدة التحكم في Windows | التهيئة لمتغير البيئة مطلوبة |
Rust | reqwest + tokio async | خدمات الويب الحديثة | يحتاج إلى اللامتزامنة لمعالجة الرؤوس |
SparkPost لديها مكتبات لبعض، ولكن ليس لجميع اللغات التي تم تناولها هنا. قررنا كتابة هذه الأمثلة "محلية" بدلاً من ذلك، حتى نتمكن من أ) تغطية المزيد من اللغات، ب) إظهار مدى بساطة الشفرة الأساسية، وج) تمكينك من رؤية بوضوح التشابهات والاختلافات بين اللغات.
في تطبيق SparkPost على الويب، يمكنك سحب وإفلات قائمة كاملة للتحقق. يمكنك أيضًا استخدام واجهة برمجة التطبيقات للتحقق من العناوين الفردية، بحيث يمكنك دمج التحقق مباشرة في سير عمل إدخال العناوين الخاص بك.
قبل فترة، توصلنا إلى أداة سطر أوامر بايثون باستخدام هذه الواجهة. تحدثنا حول ما يجب علينا القيام به للغات الأخرى - وهنا نحن! لنبدأ.
هذا مجلد مستودع Github يحتوي على أمثلة لنداءات واجهة برمجة تطبيقات التحقق من المستلمين تعمل بحوالي عشرة لغات مختلفة. نحن نحاول تغطية أكثر اللغات التطبيقية شعبية.
الطريقة الشائعة للعمل من خلال جميع هذه الأمثلة هي:
احصل على مفتاحك من متغير البيئة
SPARKPOST_API_KEYقم بعمل نداء API إلى
/api/v1/recipient-validation/single/للتحقق من مستلماستقبل ردًا على شكل سلسلة، تحتوي على بيانات بتنسيق JSON مع النتيجة
اطبع النتيجة
اللغة | مكتبة HTTP المستخدمة | أين يحدث التحقق | الاعتبارات الملحوظة |
|---|---|---|---|
Bash / Curl | curl CLI | استخدام الطرفية فقط | لا يوجد تحليل لرد JSON |
PHP | curl_setopt | من جهة الخادم | خيارات مكتبة متعددة متاحة |
Python | requests | تطبيقات السكربت أو الواجهة الخلفية | تحويل JSON إلى dict تلقائيًا |
Node.js | axios (موصى به) | الجانب الخادم فقط | تجنب الكشف عن مفاتيح API على جانب العميل |
Go | net/http + encoding/json | خدمات الواجهة الخلفية | سلامة نوع قوية مع بنى مخصصة |
C# | System.Net.Http | تطبيقات الخادم | يمكن أن ينشئ Postman نسخة من RestSharp |
Java | HttpURLConnection | خدمات الخادم | مطولة ولكن يمكن نشرها على نطاق واسع |
C / C++ | libcurl + OpenSSL | أدوات على مستوى الأنظمة | مطالب السلامة في الذاكرة المطلوبة |
Lua | luasocket + luasec | رفيق السكربت | يمكنه دفق الردود المجزأة بكفاءة |
Perl | LWP::UserAgent | أنظمة قديمة | تحليل JSON اختياري |
VB.net | Visual Studio SDK | تطبيقات وحدة التحكم في Windows | التهيئة لمتغير البيئة مطلوبة |
Rust | reqwest + tokio async | خدمات الويب الحديثة | يحتاج إلى اللامتزامنة لمعالجة الرؤوس |
SparkPost لديها مكتبات لبعض، ولكن ليس لجميع اللغات التي تم تناولها هنا. قررنا كتابة هذه الأمثلة "محلية" بدلاً من ذلك، حتى نتمكن من أ) تغطية المزيد من اللغات، ب) إظهار مدى بساطة الشفرة الأساسية، وج) تمكينك من رؤية بوضوح التشابهات والاختلافات بين اللغات.
باش / كرل
هذا يفوز بجائزة أقصر كود - إنه يستخدم ببساطة أداة سطر الأوامر “curl” لإجراء الطلب وطباعة الرد مباشرة إلى الطرفية. يمكنك أن ترى أن الإخراج هو سلسلة تحتوي على JSON؛ نحن في الواقع لا نقوم بتحليل سمات النتيجة الفردية.
هذا يفوز بجائزة أقصر كود - إنه يستخدم ببساطة أداة سطر الأوامر “curl” لإجراء الطلب وطباعة الرد مباشرة إلى الطرفية. يمكنك أن ترى أن الإخراج هو سلسلة تحتوي على JSON؛ نحن في الواقع لا نقوم بتحليل سمات النتيجة الفردية.
هذا يفوز بجائزة أقصر كود - إنه يستخدم ببساطة أداة سطر الأوامر “curl” لإجراء الطلب وطباعة الرد مباشرة إلى الطرفية. يمكنك أن ترى أن الإخراج هو سلسلة تحتوي على JSON؛ نحن في الواقع لا نقوم بتحليل سمات النتيجة الفردية.
بي إتش بي
تقدم PHP الموثوقة بعض الطرق المختلفة لإجراء مكالمات HTTPS API. هنا، اخترنا استخدام curl_setopt مع curl_exec.
إذا كنت تفضل HTTP_Request2 أو pecl_http، فإن Postman يحتوي على مولد تعليمات برمجية مدمج يمكنك استخدامه لإنشاء أمثلة مماثلة – ما عليك سوى إعداد طلب GET يعمل واستخدام زر "Code".

تقدم PHP الموثوقة بعض الطرق المختلفة لإجراء مكالمات HTTPS API. هنا، اخترنا استخدام curl_setopt مع curl_exec.
إذا كنت تفضل HTTP_Request2 أو pecl_http، فإن Postman يحتوي على مولد تعليمات برمجية مدمج يمكنك استخدامه لإنشاء أمثلة مماثلة – ما عليك سوى إعداد طلب GET يعمل واستخدام زر "Code".

تقدم PHP الموثوقة بعض الطرق المختلفة لإجراء مكالمات HTTPS API. هنا، اخترنا استخدام curl_setopt مع curl_exec.
إذا كنت تفضل HTTP_Request2 أو pecl_http، فإن Postman يحتوي على مولد تعليمات برمجية مدمج يمكنك استخدامه لإنشاء أمثلة مماثلة – ما عليك سوى إعداد طلب GET يعمل واستخدام زر "Code".

بايثون
يستخدم هذا وحدة requests الشهيرة، والتي هي عالية المستوى وبالتالي سهلة الاستخدام. يتحقق هذا المثال من رمز الحالة المست returned، ويحول نتائج JSON مرة أخرى إلى كائن قاموس بايثون، ويطبع الكائن الناتج بدلاً من مجرد سلسلة نصية.
إذا كنت تفضل مكتبة http.client المدمجة، فإن Postman يمكنه أيضًا إنشاء كود لذلك؛ ليس أطول بكثير.
يستخدم هذا وحدة requests الشهيرة، والتي هي عالية المستوى وبالتالي سهلة الاستخدام. يتحقق هذا المثال من رمز الحالة المست returned، ويحول نتائج JSON مرة أخرى إلى كائن قاموس بايثون، ويطبع الكائن الناتج بدلاً من مجرد سلسلة نصية.
إذا كنت تفضل مكتبة http.client المدمجة، فإن Postman يمكنه أيضًا إنشاء كود لذلك؛ ليس أطول بكثير.
يستخدم هذا وحدة requests الشهيرة، والتي هي عالية المستوى وبالتالي سهلة الاستخدام. يتحقق هذا المثال من رمز الحالة المست returned، ويحول نتائج JSON مرة أخرى إلى كائن قاموس بايثون، ويطبع الكائن الناتج بدلاً من مجرد سلسلة نصية.
إذا كنت تفضل مكتبة http.client المدمجة، فإن Postman يمكنه أيضًا إنشاء كود لذلك؛ ليس أطول بكثير.
نود.جي.إس
هناك عديد من مكتبات HTTP(S) لـ node.js. بدأت مع حزمة request القديمة (باستخدام دالة رد النداء) لكنها أصبحت غير مدعومة ولم تعد تُحافظ عليها بنشاط. اخترت الحزمة الأحدث axios (باستخدام الوعود).
يمكن أن يمنحك Postman أيضًا مثالًا أصليًا لـ Javascript و Unirest، في حال كنت تفضل ذلك.
نظرًا لأن هذا الرمز يحتاج إلى الوصول إلى مفتاح API الخاص بك، نوصي بشدة باستدعاء واجهة برمجة التطبيقات الخاصة بنا من جانب الخادم الخاص بك، وليس أبدًا من جانب العميل (المتصفح / الجهاز المحمول).
هناك عديد من مكتبات HTTP(S) لـ node.js. بدأت مع حزمة request القديمة (باستخدام دالة رد النداء) لكنها أصبحت غير مدعومة ولم تعد تُحافظ عليها بنشاط. اخترت الحزمة الأحدث axios (باستخدام الوعود).
يمكن أن يمنحك Postman أيضًا مثالًا أصليًا لـ Javascript و Unirest، في حال كنت تفضل ذلك.
نظرًا لأن هذا الرمز يحتاج إلى الوصول إلى مفتاح API الخاص بك، نوصي بشدة باستدعاء واجهة برمجة التطبيقات الخاصة بنا من جانب الخادم الخاص بك، وليس أبدًا من جانب العميل (المتصفح / الجهاز المحمول).
هناك عديد من مكتبات HTTP(S) لـ node.js. بدأت مع حزمة request القديمة (باستخدام دالة رد النداء) لكنها أصبحت غير مدعومة ولم تعد تُحافظ عليها بنشاط. اخترت الحزمة الأحدث axios (باستخدام الوعود).
يمكن أن يمنحك Postman أيضًا مثالًا أصليًا لـ Javascript و Unirest، في حال كنت تفضل ذلك.
نظرًا لأن هذا الرمز يحتاج إلى الوصول إلى مفتاح API الخاص بك، نوصي بشدة باستدعاء واجهة برمجة التطبيقات الخاصة بنا من جانب الخادم الخاص بك، وليس أبدًا من جانب العميل (المتصفح / الجهاز المحمول).
اذهب
تسعى Go نحو فلسفة "طريقة جيدة واحدة" للقيام بشيء ما؛ في هذه الحالة، باستخدام مكتبات "البطاريات المضمنة" net/http وencoding/json وغيرها.
تعود الطول بشكل أساسي إلى بنود التحقق من الأخطاء الصريحة if err != nil {} في كل مكان (لا استثناءات ضحك بصوت عالٍ).
نحن أيضًا نعلن عن هيكل كائن النتائج مع علامات الحقول، لتمكيننا من
تسعى Go نحو فلسفة "طريقة جيدة واحدة" للقيام بشيء ما؛ في هذه الحالة، باستخدام مكتبات "البطاريات المضمنة" net/http وencoding/json وغيرها.
تعود الطول بشكل أساسي إلى بنود التحقق من الأخطاء الصريحة if err != nil {} في كل مكان (لا استثناءات ضحك بصوت عالٍ).
نحن أيضًا نعلن عن هيكل كائن النتائج مع علامات الحقول، لتمكيننا من
تسعى Go نحو فلسفة "طريقة جيدة واحدة" للقيام بشيء ما؛ في هذه الحالة، باستخدام مكتبات "البطاريات المضمنة" net/http وencoding/json وغيرها.
تعود الطول بشكل أساسي إلى بنود التحقق من الأخطاء الصريحة if err != nil {} في كل مكان (لا استثناءات ضحك بصوت عالٍ).
نحن أيضًا نعلن عن هيكل كائن النتائج مع علامات الحقول، لتمكيننا من
جاوة
لم أكتب أي شيفرة جافا جدية من قبل، لكن كان من السهل تجميع هذا من خلال اتباع النهج العام المستخدم في مكتبة SparkPost لاستدعاءات GET الأخرى.
وبالمناسبة، كان استخدام VS Code كتحريري / مصحح للأخطاء يعمل بشكل جيد جدًا مع جميع اللغات هنا، مما أتاح لي تظليل الصياغة وخطوات تصحيح الأخطاء / عرض المتغيرات، إلخ. The InputStreamReader و BufferedReader هي تشييدات مماثلة لـ (وأفترض أنها تم نسخها بواسطة) Go.
لم أكتب أي شيفرة جافا جدية من قبل، لكن كان من السهل تجميع هذا من خلال اتباع النهج العام المستخدم في مكتبة SparkPost لاستدعاءات GET الأخرى.
وبالمناسبة، كان استخدام VS Code كتحريري / مصحح للأخطاء يعمل بشكل جيد جدًا مع جميع اللغات هنا، مما أتاح لي تظليل الصياغة وخطوات تصحيح الأخطاء / عرض المتغيرات، إلخ. The InputStreamReader و BufferedReader هي تشييدات مماثلة لـ (وأفترض أنها تم نسخها بواسطة) Go.
لم أكتب أي شيفرة جافا جدية من قبل، لكن كان من السهل تجميع هذا من خلال اتباع النهج العام المستخدم في مكتبة SparkPost لاستدعاءات GET الأخرى.
وبالمناسبة، كان استخدام VS Code كتحريري / مصحح للأخطاء يعمل بشكل جيد جدًا مع جميع اللغات هنا، مما أتاح لي تظليل الصياغة وخطوات تصحيح الأخطاء / عرض المتغيرات، إلخ. The InputStreamReader و BufferedReader هي تشييدات مماثلة لـ (وأفترض أنها تم نسخها بواسطة) Go.
C / C++
كانت هذه رحلة عبر ذاكرة الزمن، حيث كتبت الكثير من شفرة C في التسعينيات، وما زال بعضها يعمل في أعماق الشبكات الاتصالات في مكان ما. حيث أن تاريخ C يسبق الويب الحديث، فمن غير المفاجئ أن دعم المكتبات هو مهمة يدوية. نحن بحاجة إلى تنزيل (وتجميع) نسخة حديثة من Libcurl، مع ربطها بمكتبة OpenSSL – راجع README للخطوات الفعلية.
هذا يبدو وكأنه الكثير من العمل مقارنة باللغات الحديثة، خاصة عندما تكون Go (أو Lua، أو Python، أو أي من الآخرين) سريعة بما يكفي لمهام مثل هذه.
الأمر الآخر الذي نسيتُه، على الرغم من تحمل آثار المعارك السابقة، هو رعب تخصيص الذاكرة! لجعل المثال بسيطًا، قمت بتخصيص طول سلسلة URL مسبقًا على أنه 1024 حرفًا، وقمت بالتحقق من طول عنوان البريد الإلكتروني (باستخدام strlen) قبل أن ندمج إليه (باستخدام strcat).
نتعامل مع سلسلة التفويض مع مفتاح API متصل بنفس الطريقة .. على الرغم من أننا نعلم أن مفتاح API صالح لن يكون أبدًا طويلًا جدًا .. لا توجد حماية! يمكن أن يكون إدخال المستخدم القادم من متغير بيئي أي شيء. يجب عليك برمجة بشكل دفاعي.
قد يستخدم مطور أكثر تقدمًا malloc بدلاً من تخصيص متغيرات المكدس، ويحسب فقط مدى طول السلاسل المدمجة بحاجة إلى أن تكون. التفكير في هذه التعقيدات الإضافية أعطاني ألم في الأقطاب على الجانب الأيسر; لقد ذكرني بالمخاطر التي يواجهها مبرمجو C كل يوم، في محاولة لتجنب تجاوزات الذاكرة والتأثيرات الجانبية غير المتوقعة. وهذا يقودنا إلى ..
كانت هذه رحلة عبر ذاكرة الزمن، حيث كتبت الكثير من شفرة C في التسعينيات، وما زال بعضها يعمل في أعماق الشبكات الاتصالات في مكان ما. حيث أن تاريخ C يسبق الويب الحديث، فمن غير المفاجئ أن دعم المكتبات هو مهمة يدوية. نحن بحاجة إلى تنزيل (وتجميع) نسخة حديثة من Libcurl، مع ربطها بمكتبة OpenSSL – راجع README للخطوات الفعلية.
هذا يبدو وكأنه الكثير من العمل مقارنة باللغات الحديثة، خاصة عندما تكون Go (أو Lua، أو Python، أو أي من الآخرين) سريعة بما يكفي لمهام مثل هذه.
الأمر الآخر الذي نسيتُه، على الرغم من تحمل آثار المعارك السابقة، هو رعب تخصيص الذاكرة! لجعل المثال بسيطًا، قمت بتخصيص طول سلسلة URL مسبقًا على أنه 1024 حرفًا، وقمت بالتحقق من طول عنوان البريد الإلكتروني (باستخدام strlen) قبل أن ندمج إليه (باستخدام strcat).
نتعامل مع سلسلة التفويض مع مفتاح API متصل بنفس الطريقة .. على الرغم من أننا نعلم أن مفتاح API صالح لن يكون أبدًا طويلًا جدًا .. لا توجد حماية! يمكن أن يكون إدخال المستخدم القادم من متغير بيئي أي شيء. يجب عليك برمجة بشكل دفاعي.
قد يستخدم مطور أكثر تقدمًا malloc بدلاً من تخصيص متغيرات المكدس، ويحسب فقط مدى طول السلاسل المدمجة بحاجة إلى أن تكون. التفكير في هذه التعقيدات الإضافية أعطاني ألم في الأقطاب على الجانب الأيسر; لقد ذكرني بالمخاطر التي يواجهها مبرمجو C كل يوم، في محاولة لتجنب تجاوزات الذاكرة والتأثيرات الجانبية غير المتوقعة. وهذا يقودنا إلى ..
كانت هذه رحلة عبر ذاكرة الزمن، حيث كتبت الكثير من شفرة C في التسعينيات، وما زال بعضها يعمل في أعماق الشبكات الاتصالات في مكان ما. حيث أن تاريخ C يسبق الويب الحديث، فمن غير المفاجئ أن دعم المكتبات هو مهمة يدوية. نحن بحاجة إلى تنزيل (وتجميع) نسخة حديثة من Libcurl، مع ربطها بمكتبة OpenSSL – راجع README للخطوات الفعلية.
هذا يبدو وكأنه الكثير من العمل مقارنة باللغات الحديثة، خاصة عندما تكون Go (أو Lua، أو Python، أو أي من الآخرين) سريعة بما يكفي لمهام مثل هذه.
الأمر الآخر الذي نسيتُه، على الرغم من تحمل آثار المعارك السابقة، هو رعب تخصيص الذاكرة! لجعل المثال بسيطًا، قمت بتخصيص طول سلسلة URL مسبقًا على أنه 1024 حرفًا، وقمت بالتحقق من طول عنوان البريد الإلكتروني (باستخدام strlen) قبل أن ندمج إليه (باستخدام strcat).
نتعامل مع سلسلة التفويض مع مفتاح API متصل بنفس الطريقة .. على الرغم من أننا نعلم أن مفتاح API صالح لن يكون أبدًا طويلًا جدًا .. لا توجد حماية! يمكن أن يكون إدخال المستخدم القادم من متغير بيئي أي شيء. يجب عليك برمجة بشكل دفاعي.
قد يستخدم مطور أكثر تقدمًا malloc بدلاً من تخصيص متغيرات المكدس، ويحسب فقط مدى طول السلاسل المدمجة بحاجة إلى أن تكون. التفكير في هذه التعقيدات الإضافية أعطاني ألم في الأقطاب على الجانب الأيسر; لقد ذكرني بالمخاطر التي يواجهها مبرمجو C كل يوم، في محاولة لتجنب تجاوزات الذاكرة والتأثيرات الجانبية غير المتوقعة. وهذا يقودنا إلى ..
لوا
تشتهر Lua بتعايشها السهل جنبًا إلى جنب مع مجموعة من كود C، وهنا في SparkPost، نحن نستخدم Lua بشكل مكثف لتخصيصات السياسة داخل MTA Momentum الفرعي لدينا. يمكنك أيضًا استخدامها كلغة سكربت مستقلة، وهي رائعة لذلك أيضًا.
مع Lua 5.3 ومدير الحزم luarocks، نستخدم المكتبات luasocket و luasec. وموضحًا إرث تكاملها مع C، نحن نربط بمكتبة OpenSSL المحلية لدينا. تستدعي عملية تثبيت luarocks مجمع gcc (أو أي مجمع C تستخدمه)، لذا فإن إضافة مكتبات جديدة يستغرق بعض الوقت.
شيفرة Lua بسيطة جدًا. الشخصيات - تشير إلى التعليقات. توفر الدالة https.request عدة قيم عائدة (مثل Python وGo). يتم دمج السلاسل النصية باستخدام العملية .. (بدلاً من + في Python).
جسم الاستجابة من هذا الاستدعاء يتم التعامل معه باستخدام وحدة ‘ltn12’ – انظر صفحة ويكي Lua حول المرشحات والمصادر والمصارف. هذا يمكّن من التعامل الفعال مع البيانات التي يمكن أن تُعاد في “قطع” متعددة. كما يوضح ذلك المقال:
تقوم مصنع الجدول بإنشاء مصرف يخزن جميع البيانات التي تم الحصول عليها في جدول. يمكن بعد ذلك دمج البيانات بكفاءة في سلسلة نصية واحدة باستخدام دالة مكتبة table.concat.
مثالنا مجرد دمج الجدول t وطباعة المخرجات؛ يمكنك استخدام مرشح لإجراء مزيد من المعالجة.
تشتهر Lua بتعايشها السهل جنبًا إلى جنب مع مجموعة من كود C، وهنا في SparkPost، نحن نستخدم Lua بشكل مكثف لتخصيصات السياسة داخل MTA Momentum الفرعي لدينا. يمكنك أيضًا استخدامها كلغة سكربت مستقلة، وهي رائعة لذلك أيضًا.
مع Lua 5.3 ومدير الحزم luarocks، نستخدم المكتبات luasocket و luasec. وموضحًا إرث تكاملها مع C، نحن نربط بمكتبة OpenSSL المحلية لدينا. تستدعي عملية تثبيت luarocks مجمع gcc (أو أي مجمع C تستخدمه)، لذا فإن إضافة مكتبات جديدة يستغرق بعض الوقت.
شيفرة Lua بسيطة جدًا. الشخصيات - تشير إلى التعليقات. توفر الدالة https.request عدة قيم عائدة (مثل Python وGo). يتم دمج السلاسل النصية باستخدام العملية .. (بدلاً من + في Python).
جسم الاستجابة من هذا الاستدعاء يتم التعامل معه باستخدام وحدة ‘ltn12’ – انظر صفحة ويكي Lua حول المرشحات والمصادر والمصارف. هذا يمكّن من التعامل الفعال مع البيانات التي يمكن أن تُعاد في “قطع” متعددة. كما يوضح ذلك المقال:
تقوم مصنع الجدول بإنشاء مصرف يخزن جميع البيانات التي تم الحصول عليها في جدول. يمكن بعد ذلك دمج البيانات بكفاءة في سلسلة نصية واحدة باستخدام دالة مكتبة table.concat.
مثالنا مجرد دمج الجدول t وطباعة المخرجات؛ يمكنك استخدام مرشح لإجراء مزيد من المعالجة.
تشتهر Lua بتعايشها السهل جنبًا إلى جنب مع مجموعة من كود C، وهنا في SparkPost، نحن نستخدم Lua بشكل مكثف لتخصيصات السياسة داخل MTA Momentum الفرعي لدينا. يمكنك أيضًا استخدامها كلغة سكربت مستقلة، وهي رائعة لذلك أيضًا.
مع Lua 5.3 ومدير الحزم luarocks، نستخدم المكتبات luasocket و luasec. وموضحًا إرث تكاملها مع C، نحن نربط بمكتبة OpenSSL المحلية لدينا. تستدعي عملية تثبيت luarocks مجمع gcc (أو أي مجمع C تستخدمه)، لذا فإن إضافة مكتبات جديدة يستغرق بعض الوقت.
شيفرة Lua بسيطة جدًا. الشخصيات - تشير إلى التعليقات. توفر الدالة https.request عدة قيم عائدة (مثل Python وGo). يتم دمج السلاسل النصية باستخدام العملية .. (بدلاً من + في Python).
جسم الاستجابة من هذا الاستدعاء يتم التعامل معه باستخدام وحدة ‘ltn12’ – انظر صفحة ويكي Lua حول المرشحات والمصادر والمصارف. هذا يمكّن من التعامل الفعال مع البيانات التي يمكن أن تُعاد في “قطع” متعددة. كما يوضح ذلك المقال:
تقوم مصنع الجدول بإنشاء مصرف يخزن جميع البيانات التي تم الحصول عليها في جدول. يمكن بعد ذلك دمج البيانات بكفاءة في سلسلة نصية واحدة باستخدام دالة مكتبة table.concat.
مثالنا مجرد دمج الجدول t وطباعة المخرجات؛ يمكنك استخدام مرشح لإجراء مزيد من المعالجة.
بيرل
بينما بيرل مشهورة بـ السطر الواحد، إلا أن هذه ليست واحدة منها. تم تصميم بيرل للبحث السريع جداً في المستندات وتعديلها، لكنها قادرة على أكثر من ذلك بكثير. كتبت ذات مرة مجموعة كاملة من أدوات التحكم في المخزون باستخدام بيرل. عجيب… أ ع ي و ا ي…
هذا النص البرمجي يستخدم LWP::UserAgent وHTTP::Request ويعتمد اختيارياً على حزم JSON وData::Dumper حسب كيفية رغبتك في رؤية الناتج. كما هو الحال مع جميع النصوص البرمجية الأخرى في هذه الصفحة، يجب عليك ضبط متغير بيئة مسبقاً SPARKPOST_API_KEY إلى مفتاح API الخاص بك المولد والذي يتضمن وظيفة التحقق من المستلم. هذا النص البرمجي يقوم بتحديد $recipient = ‘test@gmail.com’ مباشرة ولكن يمكنك إضافة إدخال من سطر الأوامر بسهولة أو استهلاك البيانات من ملف.
بعد ملء جميع المتغيرات، نقوم بتحميل HTTP:Request مع معلمات GET ونرسلها إلى LWP:UserAgent. الرسالة الناتجة هي نتيجة اختبار تحقق البريد الإلكتروني على شكل مصفوفة. يمكنك استخدام JSON وDUMPER لعرض الناتج أو ببساطة تمرير المصفوفة لمزيد من المعالجة.
بينما بيرل مشهورة بـ السطر الواحد، إلا أن هذه ليست واحدة منها. تم تصميم بيرل للبحث السريع جداً في المستندات وتعديلها، لكنها قادرة على أكثر من ذلك بكثير. كتبت ذات مرة مجموعة كاملة من أدوات التحكم في المخزون باستخدام بيرل. عجيب… أ ع ي و ا ي…
هذا النص البرمجي يستخدم LWP::UserAgent وHTTP::Request ويعتمد اختيارياً على حزم JSON وData::Dumper حسب كيفية رغبتك في رؤية الناتج. كما هو الحال مع جميع النصوص البرمجية الأخرى في هذه الصفحة، يجب عليك ضبط متغير بيئة مسبقاً SPARKPOST_API_KEY إلى مفتاح API الخاص بك المولد والذي يتضمن وظيفة التحقق من المستلم. هذا النص البرمجي يقوم بتحديد $recipient = ‘test@gmail.com’ مباشرة ولكن يمكنك إضافة إدخال من سطر الأوامر بسهولة أو استهلاك البيانات من ملف.
بعد ملء جميع المتغيرات، نقوم بتحميل HTTP:Request مع معلمات GET ونرسلها إلى LWP:UserAgent. الرسالة الناتجة هي نتيجة اختبار تحقق البريد الإلكتروني على شكل مصفوفة. يمكنك استخدام JSON وDUMPER لعرض الناتج أو ببساطة تمرير المصفوفة لمزيد من المعالجة.
بينما بيرل مشهورة بـ السطر الواحد، إلا أن هذه ليست واحدة منها. تم تصميم بيرل للبحث السريع جداً في المستندات وتعديلها، لكنها قادرة على أكثر من ذلك بكثير. كتبت ذات مرة مجموعة كاملة من أدوات التحكم في المخزون باستخدام بيرل. عجيب… أ ع ي و ا ي…
هذا النص البرمجي يستخدم LWP::UserAgent وHTTP::Request ويعتمد اختيارياً على حزم JSON وData::Dumper حسب كيفية رغبتك في رؤية الناتج. كما هو الحال مع جميع النصوص البرمجية الأخرى في هذه الصفحة، يجب عليك ضبط متغير بيئة مسبقاً SPARKPOST_API_KEY إلى مفتاح API الخاص بك المولد والذي يتضمن وظيفة التحقق من المستلم. هذا النص البرمجي يقوم بتحديد $recipient = ‘test@gmail.com’ مباشرة ولكن يمكنك إضافة إدخال من سطر الأوامر بسهولة أو استهلاك البيانات من ملف.
بعد ملء جميع المتغيرات، نقوم بتحميل HTTP:Request مع معلمات GET ونرسلها إلى LWP:UserAgent. الرسالة الناتجة هي نتيجة اختبار تحقق البريد الإلكتروني على شكل مصفوفة. يمكنك استخدام JSON وDUMPER لعرض الناتج أو ببساطة تمرير المصفوفة لمزيد من المعالجة.
VB.net
فيجوال بيسك ليست بصرية وليست أساسية (في رأيي)، لكنها تحتل المرتبة السادسة في مؤشر لغة TIOBE، لذا لنبدأ.
هناك طرق أخرى للقيام بذلك، لكن أسهل طريق نحو النجاح هو استخدام مجموعة تطوير فيجوال ستوديو على منصة ويندوز. افتح فيجوال ستوديو، وابدأ مشروعاً جديداً واختر فيجوال بيسك، ثم اختر console.app. تأكد من استخدام إصدار VB وليس إصدار C# – فمن السهل أن تفوت ذلك في مجموعة التطوير.

في هذه المرحلة يمكنك تعديل الأسطر يدوياً أو نسخ/لصق الكود من هنا إلى فيجوال ستوديو وتوفير الكثير من الوقت. لجعل هذا الكود يعمل، تحتاج إلى إضافة متغير بيئة ونظام ويندوز. أسهل طريقة للقيام بذلك هي فتح موجه الأوامر واستخدام setx.exe كما يلي:
C:\Users\me>setx SPARKPOST_API_KEY "142<redacted<redacted>c531c3"
في ويندوز 10، يتم تطبيق ذلك على بيئة المستخدم الخاصة بك، لكنه ليس متاحاً على الفور في جلسة الأوامر الحالية، لذلك لن ينجح اختباره باستخدام
فيجوال بيسك ليست بصرية وليست أساسية (في رأيي)، لكنها تحتل المرتبة السادسة في مؤشر لغة TIOBE، لذا لنبدأ.
هناك طرق أخرى للقيام بذلك، لكن أسهل طريق نحو النجاح هو استخدام مجموعة تطوير فيجوال ستوديو على منصة ويندوز. افتح فيجوال ستوديو، وابدأ مشروعاً جديداً واختر فيجوال بيسك، ثم اختر console.app. تأكد من استخدام إصدار VB وليس إصدار C# – فمن السهل أن تفوت ذلك في مجموعة التطوير.

في هذه المرحلة يمكنك تعديل الأسطر يدوياً أو نسخ/لصق الكود من هنا إلى فيجوال ستوديو وتوفير الكثير من الوقت. لجعل هذا الكود يعمل، تحتاج إلى إضافة متغير بيئة ونظام ويندوز. أسهل طريقة للقيام بذلك هي فتح موجه الأوامر واستخدام setx.exe كما يلي:
C:\Users\me>setx SPARKPOST_API_KEY "142<redacted<redacted>c531c3"
في ويندوز 10، يتم تطبيق ذلك على بيئة المستخدم الخاصة بك، لكنه ليس متاحاً على الفور في جلسة الأوامر الحالية، لذلك لن ينجح اختباره باستخدام
فيجوال بيسك ليست بصرية وليست أساسية (في رأيي)، لكنها تحتل المرتبة السادسة في مؤشر لغة TIOBE، لذا لنبدأ.
هناك طرق أخرى للقيام بذلك، لكن أسهل طريق نحو النجاح هو استخدام مجموعة تطوير فيجوال ستوديو على منصة ويندوز. افتح فيجوال ستوديو، وابدأ مشروعاً جديداً واختر فيجوال بيسك، ثم اختر console.app. تأكد من استخدام إصدار VB وليس إصدار C# – فمن السهل أن تفوت ذلك في مجموعة التطوير.

في هذه المرحلة يمكنك تعديل الأسطر يدوياً أو نسخ/لصق الكود من هنا إلى فيجوال ستوديو وتوفير الكثير من الوقت. لجعل هذا الكود يعمل، تحتاج إلى إضافة متغير بيئة ونظام ويندوز. أسهل طريقة للقيام بذلك هي فتح موجه الأوامر واستخدام setx.exe كما يلي:
C:\Users\me>setx SPARKPOST_API_KEY "142<redacted<redacted>c531c3"
في ويندوز 10، يتم تطبيق ذلك على بيئة المستخدم الخاصة بك، لكنه ليس متاحاً على الفور في جلسة الأوامر الحالية، لذلك لن ينجح اختباره باستخدام
صدأ
راست هي لغة لبرمجة الأنظمة وخدمات الويب تركز على الأداء والسلامة والتزامن. كما تقول ويكيبيديا، كانت راست "أكثر لغة برمجة محبوبة" في استبيان مطوري Stack Overflow منذ عام 2016.
يستخدم كود راست في مستودعنا على Github مكتبة reqwest مع tokio غير متزامن، مشابهًا لـ المثال في كتاب طبخ راست. (هذا ليس خطأ مطبعي، اسم مكتبة reqwest تتم كتابته بهذه الطريقة). لقد قمنا بتضمين ملف إعدادات مدير حزمة cargo ، لذا يمكنك البناء والتشغيل باستخدام:
cd rust_recipient_validation cargo run
سيقوم هذا بترجمة الحزمة إلى كود قابل للتنفيذ، وتشغيله:
Finished dev [unoptimized + debuginfo] target(s) in 0.10s Running `target/debug/rust_recipient_validation` Status: 200 OK Body: : (etc)
يستخدم الكود std:env لقراءة متغير البيئة SPARKPOST_API_KEY. تتعامل عبارة المطابقة مع الحالة التي يكون فيها المفتاح غير معرّف. إذا كان كل شيء على ما يرام، يتم إنشاء عميل جديد من نوع reqwest::Client ويتم إصدار اتصال غير متزامن، يتبعه .await؟ (انظر توثيق reqwest). يبدو أن الاتصال غير المتزامن، بدلاً من الاتصال البسيط المتوقف، مطلوب لتعيين رؤوس الطلب. يتم قراءة نص جسم الاستجابة باستخدام ثانية .await؟، وفقًا لـ هذا المثال.
راست هي لغة لبرمجة الأنظمة وخدمات الويب تركز على الأداء والسلامة والتزامن. كما تقول ويكيبيديا، كانت راست "أكثر لغة برمجة محبوبة" في استبيان مطوري Stack Overflow منذ عام 2016.
يستخدم كود راست في مستودعنا على Github مكتبة reqwest مع tokio غير متزامن، مشابهًا لـ المثال في كتاب طبخ راست. (هذا ليس خطأ مطبعي، اسم مكتبة reqwest تتم كتابته بهذه الطريقة). لقد قمنا بتضمين ملف إعدادات مدير حزمة cargo ، لذا يمكنك البناء والتشغيل باستخدام:
cd rust_recipient_validation cargo run
سيقوم هذا بترجمة الحزمة إلى كود قابل للتنفيذ، وتشغيله:
Finished dev [unoptimized + debuginfo] target(s) in 0.10s Running `target/debug/rust_recipient_validation` Status: 200 OK Body: : (etc)
يستخدم الكود std:env لقراءة متغير البيئة SPARKPOST_API_KEY. تتعامل عبارة المطابقة مع الحالة التي يكون فيها المفتاح غير معرّف. إذا كان كل شيء على ما يرام، يتم إنشاء عميل جديد من نوع reqwest::Client ويتم إصدار اتصال غير متزامن، يتبعه .await؟ (انظر توثيق reqwest). يبدو أن الاتصال غير المتزامن، بدلاً من الاتصال البسيط المتوقف، مطلوب لتعيين رؤوس الطلب. يتم قراءة نص جسم الاستجابة باستخدام ثانية .await؟، وفقًا لـ هذا المثال.
راست هي لغة لبرمجة الأنظمة وخدمات الويب تركز على الأداء والسلامة والتزامن. كما تقول ويكيبيديا، كانت راست "أكثر لغة برمجة محبوبة" في استبيان مطوري Stack Overflow منذ عام 2016.
يستخدم كود راست في مستودعنا على Github مكتبة reqwest مع tokio غير متزامن، مشابهًا لـ المثال في كتاب طبخ راست. (هذا ليس خطأ مطبعي، اسم مكتبة reqwest تتم كتابته بهذه الطريقة). لقد قمنا بتضمين ملف إعدادات مدير حزمة cargo ، لذا يمكنك البناء والتشغيل باستخدام:
cd rust_recipient_validation cargo run
سيقوم هذا بترجمة الحزمة إلى كود قابل للتنفيذ، وتشغيله:
Finished dev [unoptimized + debuginfo] target(s) in 0.10s Running `target/debug/rust_recipient_validation` Status: 200 OK Body: : (etc)
يستخدم الكود std:env لقراءة متغير البيئة SPARKPOST_API_KEY. تتعامل عبارة المطابقة مع الحالة التي يكون فيها المفتاح غير معرّف. إذا كان كل شيء على ما يرام، يتم إنشاء عميل جديد من نوع reqwest::Client ويتم إصدار اتصال غير متزامن، يتبعه .await؟ (انظر توثيق reqwest). يبدو أن الاتصال غير المتزامن، بدلاً من الاتصال البسيط المتوقف، مطلوب لتعيين رؤوس الطلب. يتم قراءة نص جسم الاستجابة باستخدام ثانية .await؟، وفقًا لـ هذا المثال.
ملخص
في هذه المقالة، استعرضنا أمثلة على كود التحقق من المستلم بلغات عديدة. إليك طلبنا إليك.
أخبرنا إذا كنت تعتقد أننا فقدنا لغتك المفضلة. قد لا يكون لدينا العديد من الأمثلة كما هو الحال في مشروع فيبوناتشي، لكننا نحب أن نضيف المزيد. أيضًا، إذا كنت تعتقد أن أمثلتنا يمكن تحسينها، دعنا نعرف!
في هذه المقالة، استعرضنا أمثلة على كود التحقق من المستلم بلغات عديدة. إليك طلبنا إليك.
أخبرنا إذا كنت تعتقد أننا فقدنا لغتك المفضلة. قد لا يكون لدينا العديد من الأمثلة كما هو الحال في مشروع فيبوناتشي، لكننا نحب أن نضيف المزيد. أيضًا، إذا كنت تعتقد أن أمثلتنا يمكن تحسينها، دعنا نعرف!
في هذه المقالة، استعرضنا أمثلة على كود التحقق من المستلم بلغات عديدة. إليك طلبنا إليك.
أخبرنا إذا كنت تعتقد أننا فقدنا لغتك المفضلة. قد لا يكون لدينا العديد من الأمثلة كما هو الحال في مشروع فيبوناتشي، لكننا نحب أن نضيف المزيد. أيضًا، إذا كنت تعتقد أن أمثلتنا يمكن تحسينها، دعنا نعرف!



