تحويل curl إلى Elixir

قم بتحويل أوامر curl إلى كود Elixir باستخدام HTTPoison. يعمل curl2code بالكامل في متصفحك عبر WebAssembly — بياناتك تبقى خاصة. لـ Ruby، جرب محول curl إلى Ruby. لـ Go، راجع curl إلى Go. أدناه أمثلة Elixir جاهزة للاستخدام.

كيفية نسخ curl من متصفحك

  1. 1

    افتح أدوات المطور (DevTools)

    اضغط على F12 أو Ctrl+Shift+I لفتح أدوات مطور المتصفح.

  2. 2

    انتقل إلى علامة تبويب الشبكة (Network)

    انقر فوق علامة التبويب Network وقم بالإجراء الذي يؤدي إلى إرسال طلب HTTP.

  3. 3

    نسخ كـ cURL

    انقر بزر الماوس الأيمن على الطلب ← CopyCopy as cURL. ثم قم بلصقه أعلاه.

الأسئلة الشائعة

ما هي Elixir HTTPoison؟

HTTPoison هي مكتبة عميل HTTP الأكثر شهرة لـ Elixir، وهي مبنية فوق مكتبة Erlang hackney. توفر واجهة برمجة تطبيقات نظيفة ووظيفية لعمليات GET و POST والبث والطلبات غير المتزامنة. أضفها إلى deps في mix.exs: {:httpoison, "~> 2.0"}. يستخدم curl2code مكتبة HTTPoison كخيار افتراضي لتحويلات Elixir.

HTTPoison مقابل Req مقابل Tesla مقابل Finch — أيهما أستخدم؟

HTTPoison هي الأكثر رسوخًا واستخدامًا. Req أحدث وتأتي مع ميزات مدمجة مثل إعادة المحاولة والمصادقة. Tesla توفر بنية برمجيات وسيطة (middleware) مثل Faraday. Finch منخفضة المستوى وعالية الأداء للاستخدام في الإنتاج. لنهج وظيفي مماثل، راجع curl إلى Clojure أو curl إلى Ruby.

كيفية التعامل مع المصادقة في Elixir؟

مرّر الترويسات كقائمة من أزواج النصوص (string tuples): HTTPoison.get(url, [{"Authorization", "Bearer token"}]). للمصادقة الأساسية، قم بترميز user:pass باستخدام Base.encode64/1 وأضف البادئة "Basic " إلى القيمة. طابق الاستجابة باستخدام pattern match لـ {:ok, response} أو {:error, reason}. يحوّل curl2code أعلام -H و -u إلى صيغة Elixir الاصطلاحية.

كيفية إرسال بيانات النموذج متعدد الأجزاء في Elixir؟

استخدم {:multipart, parts} كجسم للطلب: HTTPoison.post(url, {:multipart, [{:file, path, {"form-data", [{"name", "file"}, {"filename", "doc.pdf"}]}, []}]}). لحقول النموذج البسيطة، أضف أزواج {"key", "value"}. يتعامل curl2code مع أعلام -F لـ HTTPoison multipart.

كيفية التعامل مع الأخطاء في طلبات Elixir HTTP؟

تعيد HTTPoison أزواجًا موسومة: {:ok, response} أو {:error, reason}. استخدم مطابقة الأنماط مع case أو with: case HTTPoison.get(url) do {:ok, %{status_code: 200}'} -> ... ; {:error, %{reason: reason}'} -> ... end. هذا هو الأسلوب الاصطلاحي في Elixir — معالجة أخطاء صريحة وشاملة بدون استثناءات.

كيفية إجراء طلبات HTTP متزامنة في Elixir؟

استخدم Task.async/1 و Task.await/1: tasks = urls |> Enum.map(&Task.async(fn -> HTTPoison.get(&1) end)) ثم results = tasks |> Enum.map(&Task.await/1). يتعامل نظام BEAM VM في Elixir مع آلاف العمليات المتزامنة بكفاءة. لتزامن مماثل، راجع curl إلى Go.

كيفية ضبط المهلة في Elixir؟

مرر الخيارات إلى HTTPoison: HTTPoison.get(url, [], [timeout: 30_000, recv_timeout: 30_000]). timeout هو مهلة الاتصال، و recv_timeout هو مهلة الاستجابة (كلاهما بالمللي ثانية). لإعادة المحاولة، قم بلف الطلب في دالة تكرارية مع تقليل المحاولات أو استخدم ميزة إعادة المحاولة المدمجة في مكتبة Req.

كيفية استخدام بروكسي في Elixir؟

مرر خيار البروكسي إلى HTTPoison: HTTPoison.get(url, [], [proxy: {"proxy.host", 8080}]). للبروكسيات التي تتطلب مصادقة، استخدم proxy_auth: {"user", "pass"}. تدعم HTTPoison أيضًا بروكسيات SOCKS5 عبر مكتبة hackney الأساسية. يقوم curl2code بتحويل أعلام -x إلى تهيئة بروكسي Elixir.

كيف يمكن إرسال طلب POST مع جسم JSON في Elixir؟

قم بتحويل أمر curl POST مثل curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL إلى Elixir باستخدام curl2code. يستخدم الكود الناتج HTTPoison.post(url, Jason.encode!(body), [{'Content-Type', 'application/json'}]). يقوم curl2code تلقائيًا باكتشاف وسوم -d/--data التي تحتوي على محتوى JSON ويضبط ترويسة Content-Type المناسبة في كود HTTPoison.

كيف يمكن إضافة مصادقة Bearer token في Elixir؟

قم بتمرير curl -H "Authorization: Bearer YOUR_TOKEN" URL إلى curl2code وسيقوم بإنشاء كود HTTPoison مع ترويسة المصادقة: [{'Authorization', 'Bearer YOUR_TOKEN'}]. يكتشف curl2code رموز Bearer من كل من وسوم -H "Authorization: Bearer ..." و --oauth2-bearer. بالنسبة لـ Basic auth، استخدم -u user:pass.

كيف يمكن ضبط ترويسة Content-Type في Elixir؟

يقوم curl2code بتحويل curl -H "Content-Type: application/json" URL إلى كود HTTPoison مع الترويسة المناسبة: [{'Content-Type', 'application/json'}]. بالنسبة لبيانات -d، يستخدم curl افتراضيًا application/x-www-form-urlencoded؛ أما بالنسبة لرفع النماذج باستخدام -F، فإنه يستخدم multipart/form-data. يقوم curl2code بربط كل منها بـ API الصحيح في HTTPoison.

روابط مفيدة

أدلة curl

تحويل curl إلى لغات أخرى