تفاوت ارسال پارامتر در بدنه url و به وسیله متد post
حل شده توسط
محمدرضا
سلام
چرا باید برای ارسال اطلاعات از بدنه(raw) url استفاده کرد و از متد post استفاده نشه
سلام و احترام
اگه امکانش هست یه خورده بیشتر توضیح بدید تا بتونم بهتون کمک کنم
امیر صالحی۲۶ مهر ۱۳۹۹، ۱۱:۲۶
سلام
برای دریافت دیتا از آرایه POST باید هدر زیر Content-Type: application/x-www-form-urlencoded استفاده کنیم (همانطور که در postman استفاده کردیم) ، ولی چون ما با فرمت json کار میکنیم و هدر application/json را استفاده کرده ایم، باید به صورت raw دیتا را در بدنه درخواست ارسال کنیم.
بهترین پاسخ
محمدرضا۰۳ آبان ۱۳۹۹، ۱۱:۰۸
دانیال جان سلام. ببین آرایه سوپرگلوبال post فقط میتونه دیتاهایی که این هدرها رو داشته باشن دریافت بکنه: application/x-www-form-urlencoded multipart/form-data
که اینها هم از طریق فرم هایی که متد ارسالشون post هست روی هدر قرار میگیره
(دلیلش هم اینه که اون زمانیکه این قاعده رو ست کردن هنوز مباحثی مثل AJAX و جیسون وجود نداشته)
بعدها که جیسون اومده و برای انتقال دیتا ازش استفاده کردن اومدن یه روش جدید رو برای دریافت دیتاهایی که هدر application/json رو دارن (داده هایی که بصورت جیسون ارسال میشن) معرفی کردن که همون ("file_get_contents("php://input هست.
امیدوارم تا حدودی با تفاوتشون آشنا شده باشی...
فــــــــــــــــــــرزان۰۶ آبان ۱۳۹۹، ۱۵:۴۵
سلام
وقتی که ما body رای روی x-www-form-urlencoded تنظیم کنیم . متن به صورت ساده یا /ASCII (۱۲۸ کارکتر) ارسال میشود این بصورت پیش فرض تنظیم هست ،در این روش تمام data بصورت key_value تبدیل میشود.
مثل (name=Arash &age =۲۴&work=Student) که با post_$ قابل دریافتن.
ولی اگر میخوای data باینری بزرگتر // non -Acii ارسال کنی میتوانی از قابلیت Raw استفاده کنی چون مشکلی با انواع فرمت نداره و تمام فرمت را پشتبانی میکنه بدونه چیزی که تغییر بده. قابلیت انواع فرمتها را دارد بطور مثال ( text, json, xml, html, ) و هیچ مشکلی برا ارسال ندارد. و بخاطر همین از php://input استفاده میکنم چون باینری بزرگ هست.