وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش ایجاد درخواست POST با curl

0 36
زمان لازم برای مطالعه: 3 دقیقه



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 رمزگذاری شده باشد.

پیشنهاد می‌کنیم بخوانید:  اصول AWS برای DevOps – نحوه راه اندازی یک ماشین لینوکس

اگر داده‌هایی را ارسال می‌کنید که حاوی تعداد زیادی جفت کلید-مقدار است، به جای تایپ داده‌ها در خط فرمان، می‌توانید آن‌ها را در یک فایل ذخیره کنید و آن فایل را به 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 گزینه.

پیشنهاد می‌کنیم بخوانید:  روش نصب Apache Maven در CentOS 7

در اینجا یک مثال اساسی از ارسال یک شی 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
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-28 15:23:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید