تحويل curl إلى Clojure
يقوم curl2code بتحويل أوامر curl إلى كود Clojure باستخدام clj-http. تتم عملية التحويل في متصفحك عبر WebAssembly لخصوصية تامة. لـ Elixir، راجع محول curl إلى Elixir. لـ Java، راجع curl إلى Java. أدناه أمثلة Clojure عملية.
كيفية نسخ curl من متصفحك
- 1
افتح أدوات المطور (DevTools)
اضغط على F12 أو Ctrl+Shift+I لفتح أدوات مطور المتصفح.
- 2
انتقل إلى علامة تبويب الشبكة (Network)
انقر فوق علامة التبويب Network وقم بالإجراء الذي يؤدي إلى إرسال طلب HTTP.
- 3
نسخ كـ cURL
انقر بزر الماوس الأيمن على الطلب ← Copy ← Copy as cURL. ثم قم بلصقه أعلاه.
الأسئلة الشائعة
ما هي clj-http؟
clj-http هي مكتبة عميل HTTP الأكثر شهرة لـ Clojure، وهي تلف Apache HttpComponents. توفر واجهة برمجة تطبيقات اصطلاحية تعتمد على البيانات مع تحليل تلقائي لـ JSON/EDN، وإدارة ملفات تعريف الارتباط، وتجميع الاتصالات. أضفها إلى project.clj: [clj-http "3.x"]. يستخدم curl2code مكتبة clj-http لجميع تحويلات Clojure.
clj-http مقابل http-kit مقابل aleph — أيهما أستخدم؟
clj-http متزامنة، غنية بالميزات، والأكثر استخدامًا. http-kit خفيفة الوزن مع دعم العمليات غير المتزامنة، وهي رائعة للخوادم التي تجري أيضًا استدعاءات HTTP. aleph مبنية على Netty لإدخال/إخراج غير حاجز عالي الأداء. للغات وظيفية مماثلة، راجع محول curl إلى Elixir أو curl إلى OCaml.
كيفية التعامل مع المصادقة في Clojure؟
لمصادقة Bearer، أضف الترويسات: (client/get url {:headers {"Authorization" "Bearer token"}'}). للمصادقة الأساسية، استخدم الخيار المدمج: {:basic-auth ["user" "pass"]}. تدعم clj-http أيضًا OAuth و digest auth. يقوم curl2code بتحويل أعلام -u والترويسات إلى خرائط (maps) Clojure اصطلاحية.
كيفية إرسال بيانات النموذج متعدد الأجزاء في Clojure؟
استخدم خيار :multipart: (client/post url {:multipart [{:name "file" :content (clojure.java.io/file "doc.pdf")} {:name "desc" :content "My file"}]}). تتعامل clj-http مع توليد الحدود و Content-Type تلقائيًا. يقوم curl2code بتحويل أعلام -F إلى هذا النمط في Clojure.
كيفية التعامل مع أخطاء HTTP في Clojure؟
بشكل افتراضي، تطرح clj-http استثناء ExceptionInfo عند الاستجابات غير التابعة لـ 2xx. قم بتعطيل ذلك باستخدام {:throw-exceptions false} للحصول على خريطة الاستجابة بدلاً من ذلك. تحقق من (:status response). استخدم try/catch مع ex-data لاستخراج الاستجابة من الاستثناءات.
كيفية إجراء طلبات HTTP غير متزامنة في Clojure؟
استخدم clj-http مع {:async? true} التي تعيد future. أو استخدم http-kit: (http/get url callback). للطلبات المتوازية، استخدم pmap أو قنوات core.async. تعمل الـ futures في Clojure على تجمع خيوط (thread pool) JVM. لتزامن مماثل، راجع curl إلى Java.
كيفية ضبط المهلة في Clojure؟
مرر خيارات المهلة: (client/get url {:connection-timeout 10000 :socket-timeout 30000}). القيم بالمللي ثانية. لإعادة المحاولة، استخدم خيار :retry-handler أو لف الطلب في دالة إعادة محاولة مخصصة مع تراجع أسي (exponential backoff). هذه تقابل --connect-timeout و --max-time في curl.
كيفية استخدام بروكسي في Clojure؟
اضبط البروكسي في خريطة الخيارات: (client/get url {:proxy-host "proxy" :proxy-port 8080}). للبروكسيات التي تتطلب مصادقة: أضف :proxy-user و :proxy-pass. تدعم clj-http أيضًا بروكسيات SOCKS. يقوم curl2code بتحويل أعلام -x و --proxy إلى خيارات بروكسي Clojure الصحيحة.
كيف يمكن إرسال طلب POST مع جسم JSON في Clojure؟
قم بتحويل أمر curl POST مثل curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL إلى Clojure باستخدام curl2code. يستخدم الكود الناتج (client/post url {:content-type :json :body (json/generate-string data)}). يقوم curl2code تلقائيًا باكتشاف وسوم -d/--data التي تحتوي على محتوى JSON ويضبط ترويسة Content-Type المناسبة في كود clj-http.
كيف يمكن إضافة مصادقة Bearer token في Clojure؟
قم بتمرير curl -H "Authorization: Bearer YOUR_TOKEN" URL إلى curl2code وسيقوم بإنشاء كود clj-http مع ترويسة المصادقة: :headers {'Authorization' 'Bearer YOUR_TOKEN'}. يكتشف curl2code رموز Bearer من كل من وسوم -H "Authorization: Bearer ..." و --oauth2-bearer. بالنسبة لـ Basic auth، استخدم -u user:pass.
كيف يمكن ضبط ترويسة Content-Type في Clojure؟
يقوم curl2code بتحويل curl -H "Content-Type: application/json" URL إلى كود clj-http مع الترويسة المناسبة: :content-type :json. بالنسبة لبيانات -d، يستخدم curl افتراضيًا application/x-www-form-urlencoded؛ أما بالنسبة لرفع النماذج باستخدام -F، فإنه يستخدم multipart/form-data. يقوم curl2code بربط كل منها بـ API الصحيح في clj-http.