از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش ایجاد درخواست POST با curl
سرفصلهای مطلب
curl
هست یک command-line ابزاری برای انتقال داده ها از یا به یک سرور راه دور با استفاده از یکی از پروتکل های پشتیبانی شده. به طور پیش فرض روی ویندوز، macOS و اکثر توزیع های لینوکس نصب می شود.
مدیران سیستم، توسعه دهندگان و سایر کاربران استفاده می کنند curl
برای آزمایش API ها، مشاهده سرصفحه های پاسخ، و درخواست HTTP.
این مقاله روش استفاده از curl را برای ایجاد درخواست های POST توضیح می دهد.
گزینه های cURL
روش HTTP POST برای ارسال داده ها به سرور راه دور استفاده می شود.
شکل کلی از curl
دستور برای ایجاد یک درخواست POST به شرح زیر است:
curl -X POST [options] [URL]
را -X
گزینه مشخص می کند که از کدام روش درخواست HTTP هنگام برقراری ارتباط با سرور راه دور استفاده می شود. در بیشتر موارد، شما نیازی به تنظیم روش ندارید زیرا از گزینه های خط فرمان مشخص می شود.
ایجاد یک درخواست POST
یک درخواست POST معمولی از طریق یک فرم HTML ارسال می شود و داده های ارسال شده به فرم معمولاً در فرم کدگذاری می شوند. application/x-www-form-urlencoded
نوع قالب کلیدهای داده و مقادیر به صورت جفت کلید-مقدار کدگذاری می شوند که با علامت از هم جدا شده اند &
نماد و با =
بین کلید و مقدار
برای ارسال درخواست POST با curl
، استفاده کنید -d
(--data
) گزینه ای برای تعیین داده ها:
curl -d 'name=rasanegar&email=rasanegar@example.com' https://example.com/form/
در مثال بالا، ما داده ها را به سرور راه دور ارسال می کنیم که از دو جفت کلید-مقدار تشکیل شده است: “name=rasanegar” و “email=rasanegar@example.com “.
شما همچنین می توانید داده ها را با استفاده از چندگانه ارسال کنید -d
گزینه ها. به عنوان مثال، دستور بالا را می توان به صورت زیر نیز نوشت:
curl -d 'name=rasanegar' -d 'email=rasanegar@example.com' https://example.com/form/
هنگام ارسال داده ها به curl
با استفاده از -d
گزینه، همیشه باید همه کاراکترهای غیرالفبایی را هم در کلیدها و هم در مقادیر به درستی URL-encode کنید. به عنوان مثال، اگر دادهای را ارسال میکنید که حاوی نامی با فاصله (“John Doe”) باشد، دستور به شکل زیر خواهد بود:
curl -d 'name=John%20Doe' https://example.com/form/
با این حال، کدگذاری دستی داده هایی که قبلاً کدگذاری نشده اند کمی ناخوشایند است. در این صورت بهتر است از --data-urlencode
گزینه ای که می گوید curl
برای رمزگذاری داده های ارائه شده دستور بالا، زمانی که با --data-urlencode
گزینه، به شکل زیر خواهد بود:
curl --data-urlencode 'name=John Doe' https://example.com/form/
داده ها به curl
فرمان معمولاً در key=value
قالب وقتی از --data-urlencode
گزینه، فقط قسمت مقدار کدگذاری شده است. curl
انتظار داشته باشید که کلید قبلاً URL رمزگذاری شده باشد.
اگر دادههایی را ارسال میکنید که حاوی تعداد زیادی جفت کلید-مقدار است، به جای تایپ دادهها در خط فرمان، میتوانید آنها را در یک فایل ذخیره کنید و آن فایل را به curl
:
curl -d @name_of_the_file https://example.com/form/
هنگامی که داده های ارائه شده به فرمان با شروع می شود @
سمبل، curl
داده ها را یک فایل در سیستم محلی می داند و داده های آن فایل را می خواند و استفاده می کند.
ایجاد یک درخواست POST با استفاده از داده های فرم چندبخشی
نوع محتوا multipart/form-data
زمانی استفاده می شود که داده های فرم حاوی فایل های باینری یا سایر داده های حجم بزرگ باشد.
برای ایجاد یک درخواست POST چند قسمتی، آن را فراخوانی کنید curl
فرمان با یک یا چند -F
(--form
) گزینه ها و به دنبال آن key=value
جفت وقتی که -F
گزینه استفاده می شود، curl
داده ها را با استفاده از multipart/form-data
نوع محتوا.
مثال زیر نشان می دهد که چگونه می توان یک درخواست POST به فرمی که دارای فیلدهای “name” و “image” است، ارسال کرد:
curl -F 'name=rasanegar' -F 'image@photo.jpg' https://example.com/form/
آپلود فایل ها
برای ارسال یک فایل با curl
، اضافه کردن @
نماد قبل از محل فایل فایل می تواند آرشیو، تصویر، سند و غیره باشد.
curl -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload/
داده های JSON را با cURL پست کنید
JSON یک فرمت داده مبتنی بر متن است که برای انتقال داده بین وب سرویس ها و API ها استفاده می شود.
می توانید داده های JSON را با استفاده از POST با ارسال کنید curl
با استفاده از --json
گزینه.
در اینجا یک مثال اساسی از ارسال یک شی JSON به یک سرور آورده شده است:
curl --json '{"website": "rasanegar.com"}' http://example.com/api/
curl
داده های JSON را همانطور که هست ارسال می کند، بنابراین مطمئن شوید که در قالب JSON معتبر است.
همانند درخواست های معمولی POST، می توانید از چندین مورد استفاده کنید --json
گزینه ها در یک دستور:
curl --json '{"name": "Jonn"}' --json '{"age": "36"}' http://example.com/api/
داده های JSON را می توان از یک فایل محلی نیز خواند:
curl --json @json_data.txt http://example.com/api/
اگر استفاده می کنید curl
در یک اسکریپت، می توانید داده های JSON را از دستور دیگری به آن لوله کنید curl
، همانطور که در زیر نشان داده شده است:
echo '{"website": "rasanegar.com"}' | curl --json @- http://example.com/api/
را @-
part به معنای خواندن بدنه از ورودی استاندارد است.
نتیجه
ما روش استفاده را به شما نشان دادیم curl
برای ایجاد درخواست های POST برای اطلاعات بیشتر در مورد curl
، بازدید کنید حلقه Documentation
page.
اگر سوال یا بازخوردی دارید، در کامنت بگذارید.
terminal
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 15:23:03