تبدیل curl به Clojure
curl2code دستورات curl را با استفاده از clj-http به کد Clojure تبدیل میکند. این تبدیل برای حفظ حریم خصوصی کامل، در مرورگر شما از طریق 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 را در بر میگیرد. این کتابخانه یک API مرسوم و دادهمحور با پارس خودکار JSON/EDN، مدیریت کوکی و connection pooling ارائه میدهد. به project.clj اضافه کنید: [clj-http "3.x"]. curl2code از clj-http برای تمام تبدیلهای Clojure استفاده میکند.
clj-http در مقابل http-kit در مقابل aleph — از کدام استفاده کنیم؟
clj-http همزمان، پر از ویژگی و پرکاربردترین است. http-kit سبکوزن با پشتیبانی از async است، عالی برای سرورهایی که درخواستهای HTTP نیز ارسال میکنند. aleph بر پایه Netty برای I/O ناهمزمان با کارایی بالا ساخته شده است. برای زبانهای تابعی مشابه، مبدل curl به Elixir یا curl به OCaml ما را ببینید.
چگونه احراز هویت را در Clojure مدیریت کنیم؟
برای احراز هویت Bearer، هدرها را اضافه کنید: (client/get url {:headers {"Authorization" "Bearer token"}'}). برای احراز هویت Basic، از گزینه داخلی استفاده کنید: {:basic-auth ["user" "pass"]}. clj-http همچنین از OAuth و digest auth پشتیبانی میکند. curl2code پرچمهای -u و هدر را به مپهای مرسوم Clojure تبدیل میکند.
چگونه دادههای multipart form را در Clojure ارسال کنیم؟
از گزینه :multipart استفاده کنید: (client/post url {:multipart [{:name "file" :content (clojure.java.io/file "doc.pdf")} {:name "desc" :content "My file"}]}). clj-http تولید boundary و Content-Type را به طور خودکار انجام میدهد. curl2code پرچمهای -F را به این الگوی Clojure تبدیل میکند.
چگونه خطاهای HTTP را در Clojure مدیریت کنیم؟
به طور پیشفرض، clj-http در پاسخهای غیر 2xx استثنای ExceptionInfo پرتاب میکند. با {: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 استفاده کنید. futureهای Clojure روی thread pool ماشین مجازی جاوا اجرا میشوند. برای همزمانی مشابه، 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 را با استفاده از curl2code به Clojure تبدیل کنید. کد تولید شده از (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 نگاشت میکند.