تبدیل curl به Lua
curl2code دستورات curl را با استفاده از کتابخانه http به کد Lua تبدیل میکند. این تبدیل برای حفظ حریم خصوصی کامل، در مرورگر شما از طریق WebAssembly انجام میشود. برای Python، مبدل curl به Python ما را بررسی کنید. برای Ruby، curl به Ruby را ببینید. در ادامه مثالهای کاربردی Lua آورده شده است.
نحوه کپی کردن curl از مرورگر
- 1
باز کردن DevTools
کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعهدهنده مرورگر باز شوند.
- 2
رفتن به تب Network
روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP میشود را انجام دهید.
- 3
کپی به عنوان cURL
روی درخواست راستکلیک کنید ← Copy ← Copy as cURL. سپس آن را در بالا جایگذاری کنید.
سوالات متداول
Lua http چیست؟
کتابخانه lua-http (یا socket.http از LuaSocket) روش استاندارد برای ایجاد درخواستهای HTTP در Lua است. این کتابخانه متدهای پایه GET، POST و متدهای درخواست سفارشی را ارائه میدهد. برای ویژگیهای بیشتر، lua-resty-http در محیطهای OpenResty/Nginx محبوب است. با luarocks install http نصب کنید. curl2code کد را با استفاده از ماژول http تولید میکند.
socket.http در مقابل lua-resty-http در مقابل lua-curl — از کدام استفاده کنیم؟
socket.http (LuaSocket) استاندارد برای Lua عمومی است. lua-resty-http برای OpenResty/Nginx با I/O غیرمسدودکننده است. lua-curl کتابخانه libcurl را برای پشتیبانی کامل از پروتکلها در بر میگیرد. از socket.http برای اسکریپتهای مستقل و از resty-http برای وبسرورها استفاده کنید. برای اسکریپتنویسی مشابه، curl به Python یا curl به Ruby را ببینید.
چگونه احراز هویت را در Lua مدیریت کنیم؟
هدر Authorization را در جدول هدرها تنظیم کنید: headers = { Authorization = "Bearer token" }. برای احراز هویت Basic، با یک کتابخانه base64 انکود کنید: "Basic " .. base64.encode(user .. ":" .. pass). هدرها را در جدول گزینههای درخواست پاس دهید. curl2code پرچمهای -u و هدر را مدیریت میکند.
چگونه دادههای multipart form را در Lua ارسال کنیم؟
بدنه multipart را به صورت دستی با رشتههای boundary بسازید، یا از یک کتابخانه کمکی مانند multipart-post استفاده کنید. هدر Content-Type را با boundary تنظیم کنید. تابع http.request در LuaSocket یک تابع منبع (source function) برای استریمینگ آپلودهای بزرگ میپذیرد. curl2code پرچمهای -F را به نحو Lua تبدیل میکند.
چگونه خطاهای HTTP را در Lua مدیریت کنیم؟
تابع http.request در LuaSocket چندین مقدار برمیگرداند: body, code, headers, status = http.request(url). code را برای وضعیت HTTP (200، 404 و غیره) یا nil در صورت شکست شبکه بررسی کنید. از الگوی assert() یا if not body then در Lua برای بررسی خطا استفاده کنید.
چگونه JSON را در Lua پارس کنیم؟
از ماژول cjson (سریع، مبتنی بر C) استفاده کنید: local data = cjson.decode(json_string). برای انکود کردن: cjson.encode(table). در OpenResty، cjson از قبل نصب شده است. برای Lua مستقل، با luarocks install lua-cjson نصب کنید. متناوباً، از dkjson که خالص Lua است استفاده کنید.
چگونه تایماوتها را در Lua تنظیم کنیم؟
با LuaSocket: http.TIMEOUT = 30 را به صورت سراسری تنظیم کنید، یا یک اتصال سفارشی ایجاد کرده و :settimeout(30) را فراخوانی کنید. در lua-resty-http، از httpc:set_timeout(30000) (میلیثانیه) استفاده کنید. تایماوتها از معلق ماندن نامحدود اسکریپتها در سرورهای پاسخگو جلوگیری میکنند.
چگونه از یک پروکسی در Lua استفاده کنیم؟
با LuaSocket، فیلد proxy را در گزینههای درخواست تنظیم کنید: http.request{ url = target, proxy = "http://proxy:8080" }. برای lua-resty-http، مستقیماً به پروکسی متصل شوید و از متد CONNECT برای تونلزنی HTTPS استفاده کنید. curl2code پرچمهای -x را به تنظیمات پروکسی مناسب در Lua تبدیل میکند.
چگونه یک درخواست POST با بدنه JSON در Lua ارسال کنیم؟
یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL را با استفاده از curl2code به Lua تبدیل کنید. کد تولید شده از http.request(url, json_body, headers) استفاده میکند. curl2code به طور خودکار فلگهای -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد http تنظیم میکند.
چگونه احراز هویت با Bearer token را در Lua اضافه کنیم؟
دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد http را با هدر احراز هویت تولید کند: headers['Authorization'] = 'Bearer YOUR_TOKEN'. curl2code توکنهای Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص میدهد. برای Basic auth، از -u user:pass استفاده کنید.
چگونه هدر Content-Type را در Lua تنظیم کنیم؟
curl2code دستور curl -H "Content-Type: application/json" URL را به کد http با هدر مناسب تبدیل میکند: headers['Content-Type'] = 'application/json'. برای دادههای -d، دستور curl به طور پیشفرض از application/x-www-form-urlencoded استفاده میکند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده میکند. curl2code هر کدام را به API صحیح http نگاشت میکند.