تبدیل curl به Elixir
دستورات curl را با استفاده از HTTPoison به کد Elixir تبدیل کنید. curl2code کاملاً در مرورگر شما از طریق WebAssembly اجرا میشود — دادههای شما خصوصی میمانند. برای Ruby، مبدل curl به Ruby ما را امتحان کنید. برای Go، curl به Go را ببینید. در ادامه مثالهای آماده Elixir آورده شده است.
نحوه کپی کردن curl از مرورگر
- 1
باز کردن DevTools
کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعهدهنده مرورگر باز شوند.
- 2
رفتن به تب Network
روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP میشود را انجام دهید.
- 3
کپی به عنوان cURL
روی درخواست راستکلیک کنید ← Copy ← Copy as cURL. سپس آن را در بالا جایگذاری کنید.
سوالات متداول
Elixir HTTPoison چیست؟
HTTPoison محبوبترین کلاینت HTTP برای Elixir است که بر پایه کتابخانه Erlang hackney ساخته شده است. این کتابخانه یک API تمیز و تابعی برای GET، POST، استریمینگ و درخواستهای ناهمزمان ارائه میدهد. به وابستگیهای mix.exs اضافه کنید: {:httpoison, "~> 2.0"}. curl2code از HTTPoison به عنوان پیشفرض برای تبدیلهای Elixir استفاده میکند.
HTTPoison در مقابل Req در مقابل Tesla در مقابل Finch — از کدام استفاده کنیم؟
HTTPoison قدیمیترین و پرکاربردترین است. Req جدیدتر است و همراه با امکاناتی مانند تلاش مجدد و احراز هویت ارائه میشود. Tesla معماری میانافزار (middleware) مانند Faraday را ارائه میدهد. Finch سطح پایین و با کارایی بالا برای استفاده در محیط تولید است. برای رویکردهای تابعی مشابه، curl به Clojure یا curl به Ruby را ببینید.
چگونه احراز هویت را در Elixir مدیریت کنیم؟
هدرها را به عنوان لیستی از تاپلهای رشتهای پاس دهید: HTTPoison.get(url, [{"Authorization", "Bearer token"}]). برای احراز هویت Basic، مقدار user:pass را با Base.encode64/1 انکود کنید و "Basic " را به ابتدای مقدار اضافه کنید. پاسخ را الگوبرداری (pattern match) کنید برای {:ok, response} یا {:error, reason}. curl2code فلگهای -H و -u را به نحو اصطلاحی Elixir تبدیل میکند.
چگونه دادههای multipart form را در Elixir ارسال کنیم؟
از {:multipart, parts} به عنوان بدنه استفاده کنید: HTTPoison.post(url, {:multipart, [{:file, path, {"form-data", [{"name", "file"}, {"filename", "doc.pdf"}]}, []}]}). برای فیلدهای فرم ساده، tupleهای {"key", "value"} را اضافه کنید. curl2code پرچمهای -F را برای multipart در HTTPoison مدیریت میکند.
چگونه خطاها را در درخواستهای HTTP در Elixir مدیریت کنیم؟
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 در 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 را با استفاده از curl2code به Elixir تبدیل کنید. کد تولید شده از 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 نگاشت میکند.