چند وقت پیش یک 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 ، تونستم ارتباط صحیح با سرور رو برقرار کنم.
امیدوارم از این مقاله لذت ببرید و براتون مفید باشه.
اگر دوست دارید میتونید از طریق صفحه لینکدین با من در ارتباط باشید :)
موفق باشید