ویرگول
ورودثبت نام
رهام رفیعی تهرانی
رهام رفیعی تهرانی
خواندن ۲ دقیقه·۴ ماه پیش

تنظیم نحوه ارسال آرایه به سرور در axios


چند وقت پیش یک api دستم رسید که باید در یک فیلد خاص، آرایه ای از شناسه ها رو به سمت سرور ارسال میکردم. ارسال request با axios انجام میشد ولی من تجربه کار با axios رو نداشتم. برای هماهنگ شدن کارکرد فرانت و بک مجبور شدم نیم ساعتی سرچ کنم تا به نتیجه مطمئن برسم. در این مقاله میخوام در مورد اون سرچ ساده صحبت کنم.


صورت مسئله

فرض کنید یه آرایه از شناسه ها داریم

const arr=[2,3,4]

قراره این شناسه ها با پارامتری بنام ids ، در ریکوئستی با متد GET ، از سمت فرانت به بک اند ارسال بشه.

در مدلی که سمت بک اند پیاده سازی شده بود، انتظار میرفت آرایه ها به صورت زیر ارسال بشه:

/api/something?ids=2&ids=3&ids=4

در حالیکه به صورت پیش فرض از سمت فرانت به صورت زیر ارسال میشد:

/api/something?ids[]=2&ids[]=3&ids[]=4


توضیح کلی

به صورت کلی آرایه ای از مقادیر که به صورت GET و داخل url قراره ارسال بشه سه حالت استاندارد داره

۱. حالت بدون براکت []

ids=2&ids=3&ids=4

۲. حالت با براکت بدون index

ids[]=2&ids[]=3&ids[]=4

۳. حالت با براکت و با index

ids[0]=2&ids[1]=3&ids[2]=4


یک حالت غیراستاندارد هم هست که پیشنهاد میکنم ازش اجتناب کنید

ids=2,3,4


با خودم فکر کردم من دارم از یک کتابخانه استاندارد، قدیمی (تکمیل شده) به غایت پرطرفدار استفاده میکنم بنام axios. بنابر این احتمالش خیلی زیاده که توسعه دهندگانش برای پشیبانی کردن از این سه حالت راه حلی ارائه داده باشند.


بعد از سه چهار تا سرچ و اصلاح keyword بالاخره به جواب مورد نظرم رسیدم

کتابخانه axios در پارامترهای ارسال ریکوئست خودش یک تنظیمی داره بنام paramsSerializer. داخل این تنظیم یک پراپرتی هست بنام indexes که سه تا مقدار میگیره برای سه حالت استاندارد

تنظیم حالت بدون براکت

تنظیم حالت با براکت بدون index

تنظیم حالت با براکت با index


مقدار پیش فرض این تنظیم حالت false هست، یعنی ارسال آرایه مقادیر با براکت بدون index . بنابر این با تغییر تنظیمات axios موقع ساخت instance ، تونستم ارتباط صحیح با سرور رو برقرار کنم.


امیدوارم از این مقاله لذت ببرید و براتون مفید باشه.

اگر دوست دارید میتونید از طریق صفحه لینکدین با من در ارتباط باشید :)


موفق باشید

axiosnextjsreactجاوااسکرپتjavascript
برنامه نویسی یک شغل نیست، یک هنره.
شاید از این پست‌ها خوشتان بیاید