بهعنوان یک توسعهدهنده وب یا علاقهمند به فناوری، درک درخواستهای HTTP و نحوه تعامل با APIها بسیار مهم است، بهویژه وقتی صحبت از خودکارسازی درخواستها و اشکالزدایی به میان میآید. در چنین سناریوهایی، ممکن است بخواهید یک درخواست سریع HTML را از ترمینال خود اجرا کنید و اینجاست که cURL، یک ابزار خط فرمان رایگان برای انتقال داده، مفید است.
URL مشتری (cURL) به شما امکان می دهد داده ها را بین دستگاه خود و سرور از طریق یک رابط خط فرمان (CLI) مبادله کنید. به سادگی با مشخص کردن URL سرور و دادههای ارسالی، cURL فرمهای درخواست متنوعی را فعال میکند، مانند ابزارهای API مانند Postman و Insomnia، اما مستقیماً از ترمینال شما.
در این مقاله، دستور cURL را معرفی میکنیم، چگونگی و چرایی استفاده از آن را بررسی میکنیم و نمونههای رایج دستور cURL و موارد استفاده را به نمایش میگذاریم.
دستور cURL چیست؟
URL کلاینت (cURL، تلفظ شده “curl”) یک ابزار خط فرمان است که تبادل داده ها را بین یک دستگاه و یک سرور از طریق یک ترمینال امکان پذیر می کند. با استفاده از این رابط خط فرمان (CLI)، کاربر یک URL سرور (محلی که میخواهد درخواست ارسال کند) و دادههایی را که میخواهد به آن URL سرور ارسال کند، مشخص میکند.
ابزارهای API مانند Postman و Insomnia یک رابط کاربری تعاملی (UI) ارائه میکنند که به شما امکان میدهد اشکال مختلفی از درخواستها را به URLها برای دریافت و پردازش درخواستها ارسال کنید. دستور cURL همین کار را انجام می دهد، مگر در ترمینال شما. cURL روی لینوکس، مک و ویندوز کار می کند.
دستور cURL از کتابخانه انتقال URL سمت سرویس گیرنده libcURL استفاده می کند . این کتابخانه از بسیاری از پروتکل های انتقال مختلف از جمله HTTPS، SMTP و FTP پشتیبانی می کند. همچنین به شما این امکان را میدهد که کوکیها را اضافه کنید، پراکسیها را تنظیم کنید و اعتبارنامههای احراز هویت را هنگام درخواستها اضافه کنید.
موارد استفاده از cURL شامل آزمایش API ها، دانلود داده ها از منابع، آزمایش وب سایت ها و دنبال کردن تغییر مسیرها از ترمینال است.
کتاب الکترونیکی رایگان: نحوه استفاده از API
برای یادگیری نحوه استفاده از API فرم را پر کنید.
نحوه استفاده از cURL
می دانید دستور cURL چیست، اما چگونه کار می کند؟
cURL از قبل روی ویندوز و macOS نصب شده است — در غیر این صورت، می توانید بسته را از وب سایت cURL دانلود کنید .
دستور cURL URL را برای انتقال داده به – یا دریافت داده از – به همراه گزینه های دیگر برای اهداف مختلف دریافت می کند.
نحو دستور cURL به صورت زیر است:
cURL [گزینه ها] [URL]
این مقاله از JSONPlaceholder Fake API برای توضیح روش های مختلف استفاده از cURL استفاده می کند. این API ساختگی شامل مسیرهای نمونه متفاوتی برای درخواست است.
درخواست داده از منبع
با استفاده از روش GET با cURL، میتوانید به سرعت دادهها را از یک منبع یا API درخواست کنید. در اینجا یک دستور ساده cURL وجود دارد که یک درخواست GET می دهد :
cURL https://jsonplaceholder.typicode.com/todos/1
بدون ارسال هیچ پرچم یا گزینه ای، دستور cURL به طور پیش فرض درخواست GET را به URL مشخص شده ارسال می کند. این دستور بدنه پاسخ ارسال شده از API را برمی گرداند که در ترمینال شما به شکل زیر است:
{
“userId”: 1,
“id”: 1,
“title”: “delectus aut autem”,
“completed”: false
}
این شبیه به نتایج پلتفرم هایی مانند Postman است که در زیر نشان داده شده است:
علاوه بر این، میتوانید گزینهها و مقادیر را برای استفاده از روش درخواست متفاوت با دستور cURL اضافه کنید. به عنوان مثال می توانید از گزینه -X (خط خط تیره و بزرگ X) با روش درخواست استفاده کنید. گزینه -X یک نام مستعار برای درخواست است .
دستور را به صورت زیر بنویسید:
cURL -X [روش] [URL]
متد پیشفرض GET در اولین دستور cURL در بالا مانند موارد زیر است:
cURL -X GET https://jsonplaceholder.typicode.com/todos/1
ارسال داده به منبع
با استفاده از روش POST و دستور cURL می توانید داده ها را از طریق API به سرور منتقل کنید. API دادهها را پردازش میکند، سپس مراحلی مانند ذخیره آنها در پایگاه داده را انجام میدهد و پاسخی را برمیگرداند که وضعیت درخواست شما را نشان میدهد.
برای ایجاد یک درخواست POST به یک URL، از گزینه -X استفاده کنید و روش POST را به عنوان مقدار ارسال کنید. اما در مورد افزودن داده به درخواست چطور؟ شما از گزینه دیگری استفاده می کنید، -d (خط فاصله و d) که نام مستعار –data است .
هنگام ارسال درخواست می توانید از دو قالب داده محبوب استفاده کنید: application/x-www-form-urlencoded یا application/json . در ادامه به هر دوی این روش ها خواهیم پرداخت.
application/x-www-form-URLencoded
اگر فرمت مورد نظر خود را مشخص نکنید، cURL به طور پیش فرض از application/x-www-form-urlencoded استفاده می کند . در اینجا یک مثال با استفاده از این فرمت و API جعلی JSON آورده شده است:
cURL -X POST -d “name=cURL&type=article” https://jsonplaceholder.typicode.com/posts
این دستور یک درخواست POST به https://jsonplaceholder.typicode.com/posts ارسال می کند و داده های رمزگذاری شده URL “name= cURL &type=article” را که یک کلید نام با مقدار cURL و یک کلید نوع با مقدار مقاله است، ارسال می کند.
برای درخواستهای POST که به API جعلی JSON ارسال میشود، بدنه پاسخ، شی دادهای است که همراه با یک ویژگی ID به آن ارسال میشود.
در اینجا بدنه پاسخ از API پس از وارد کردن دستور آمده است:
{
“name”: “cURL”,
“type”: “article”,
“id”: 101
}
برنامه/JSON
با cURL، شما همچنین می توانید یک شیء JSON رشته ای مانند این ارسال کنید:
cURL -X POST -d ‘{“name”: “cURL”, “type”: “article”}’ https://jsonplaceholder.typicode.com/posts
همانطور که در بالا توضیح داده شد، داده های این درخواست در فرمت application/x-www-form-urlencoded ارسال می شود . در اینجا نتیجه API آمده است:
{
“{“name”: “cURL”, “type”: “article”}”: “”,
“id”: 101
}
API درک میکند که دادههای درخواست در قالب دادههای کدگذاری شده URL باشند، بنابراین آنطور که انتظار دارید تفسیر نمیکند. شما باید با استفاده از گزینه -H (هیفن با حروف بزرگ H)، نام مستعار برای –header و ارسال هدر Content-Type به صورت زیر مشخص کنید که این فرمت داده JSON است :
cURL -X POST -d ‘{“name”: “cURL”، “type”: “article”}” -H “Content-Type: application/json” https://jsonplaceholder.typicode.com/posts
اکنون، بدنه پاسخ مناسب را از API دریافت می کنید:
{
“name”: “cURL”,
“type”: “article”,
“id”: 101
}
به جای تایپ رشته JSON در ترمینال، می توانید یک فایل JSON را مشخص کنید که دستور cURL برای گزینه داده استفاده می کند. برای مثال، فرض کنید فایلی به نام data.json با محتویات زیر دارید:
{
“name”: “cURL”,
“type”: “article”
}
می توانید دستور cURL را با فرض اینکه در همان پروژه فایل است اجرا کنید. این دستور فایل JSON را دریافت می کند، آن را رشته می کند و همراه با درخواست ارسال می کند. شما همان نتیجه فوق را می گیرید:
{
“name”: “cURL”,
“type”: “article”
}
حذف منابع روی سرور
با استفاده از روش DELETE و دستور cURL می توانید درخواست های حذف را به یک API ارسال کنید . URL و دادههایی که برای این درخواست ارائه میکنید به پیکربندی API بستگی دارد.
برای JSON Fake API، مسیر منبع و روش DELETE را به صورت زیر مشخص میکنید:
cURL -X DELETE https://jsonplaceholder.typicode.com/posts/1
بدن پاسخ یک شی خالی است:
{}
بهترین برای به روز رسانی منابع موجود با استفاده از یک API
با استفاده از روش PUT و دستور cURL، میتوانید درخواستهای «بهروزرسانی» را به یک API که یک منبع موجود را تغییر میدهد، ارسال کنید. برای JSON Fake API، مسیر منبع و روش PUT را مشخص میکنید و مقداری داده را برای بهروزرسانی منبع ارسال میکنید.
در اینجا می توانید از هر فرمت داده ای که می خواهید استفاده کنید. این مثال از application/json استفاده می کند :
cURL -X PUT -d ‘{“name”: “json”, “type”: “post”}’ -H “Content-Type: application/json” https://jsonplaceholder.typicode.com/posts/1
شما باید مستقیماً فرمت داده را در هدر مشخص کنید تا API بتواند درخواست را به درستی تفسیر کند.
کد بالا این بدنه پاسخ را برمی گرداند:
{
“name”: “json”,
“type”: “post”,
“id”: 1
}
پروتکل ها و فرمت های cURL
به طور پیش فرض، cURL از پروتکل HTTP استفاده می کند. در اینجا برخی از پروتکل ها و فرمت های دیگری وجود دارد که cURL می تواند از آنها استفاده کند:
پروتکل انتقال فایل
پروتکل انتقال فایل ( FTP ) فایل ها را از یک سرور به یک کلاینت منتقل می کند. از این پروتکل با cURL برای آپلود فایل هایی مانند این استفاده کنید:
cURL -T [فایل انتخاب شده] “ftp://[target-destination]”
cURL جایگزین خوبی برای یک کلاینت استاندارد FTP است .
پروتکل ساده انتقال نامه
پروتکل انتقال نامه ساده ( SMTP ) برای ارسال داده ها به سرور SMTP است. این داده ها شامل متنی است که می فرستید، فرستنده و گیرنده. به نظر می رسد این است:
cURL smtp://[smtp-sever] –mail-from [فرستنده] –mail-rcpt [گیرنده] –upload-file [mail-content-file]
پروتکل شبکه دیکشنری
پروتکل شبکه دیکشنری ( DICT ) دسترسی به فرهنگ لغت را فراهم می کند. با استفاده از آن با cURL، دستور زیر را اجرا می کنید:
cURL “dict://dict.org/d:hello”
با این دستور، نتیجه ای دریافت می کنید که فرهنگ لغت انتخاب شده و معنای “سلام” را از فرهنگ لغت نشان می دهد.
می توانید پروتکل های بیشتری را در صفحه مرد cURL بیابید .
موارد استفاده رایج برای cURL
در حالی که پلتفرمهای API معمولاً رابطهای بصری برای درخواست و انتقال دادهها به URL ارائه میکنند، cURL میتواند ابزاری عالی برای استفاده با ترمینال باشد. در اینجا چند مورد استفاده رایج برای دستور cURL آورده شده است.
آزمایش سریع API ها از ترمینال
همانطور که دیدیم، cURL به شما این امکان را می دهد که API ها را به سرعت از ترمینال خود بدون نیاز به دانلود برنامه های مبتنی بر API آزمایش کنید.
دانلود تصاویر و فایل ها در دستگاه
از آنجایی که ترمینال به سیستم فایل دسترسی دارد، می توانید تصاویر را به راحتی از URL ها نیز دانلود کنید.
به عنوان مثال، در اینجا نشانی وب نشانواره گوگل است . با استفاده از cURL می توانید تصویر را به صورت زیر دانلود کنید:
cURL https://www.google.com/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png > google-logo.png
استفاده از cURL و URL تصویر، داده های باینری تصویر را برمی گرداند. با ذخیره داده های تصویر خام در یک فایل تصویری (با پسوند png. مطابق با پسوند تصویر اصلی)، می توانید تصویر را در دستگاه خود ذخیره کنید.
ذخیره محتوای URL
مانند بارگیری تصاویر، می توانید محتوای URL (به عنوان مثال، یک صفحه وب) را نیز در یک فایل ذخیره کنید. در اینجا یک مثال برای صفحه اصلی Google آورده شده است:
cURL -o google.html https://www.google.com
این کد منبع صفحه اصلی گوگل را در فایلی به نام google.html ذخیره می کند.
کاری کنید که CURL برای شما کار کند.
cURL یک ابزار CLI است که به شما امکان می دهد داده ها را از طریق یک URL تحت پروتکل های مختلف درخواست و انتقال دهید. این به شما انعطاف پذیری و کنترل URL ها در ترمینال را می دهد.
استفاده از cURL در ترمینال ساده است، اما ممکن است برای هر کاربر بصری نباشد. با ارائه URL و گزینه های مورد نیاز، می توانید داده ها را از URL ها درخواست و دانلود کنید، داده ها را به URL ها منتقل کنید و موارد دیگر.