💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ افضلی
مشکلات کد جلسه
جامعه نود جی اس ایجاد شده در ۲۹ آذر ۱۴۰۱

مشکل اول این کد توی اینه که وقتی درخواست بفرستید به آدرس پایین ارور میده. دلیلش اینه که parts[3] استرینگ هست و باید length براش چک بشه

http://localhost:8080/api/user/  #with extra slash at the end

اصلاح تابع

function getAPIControllerMethodName(req) {
    parts = req.parsedURL.pathname.split('/');
    return {
        controller: (parts[2] != undefined ? parts[2] : 'Home'),
        method: (parts[3].length != 0 ? parts[3] : 'index') //This line is changed.
    };
}

مشکل دوم وقتی هست که query string میدیم به api

اگه به این صورت باشه: http://localhost:8080/api/user?q=1 علامت سوال رو هم جزو اسم کنترلر در نظر میگیره.

البته با حل مشکل اول حالت : http://localhost:8080/api/user/?q=1 ارور نمیده اما بدون اسلش ارور میده.

اصلاح برای حل مشکل دوم:

function getAPIControllerMethodName(req) {
    bigParts = req.parsedURL.pathname.split( '?' ); //New Line.
    parts = bigParts[0].split('/');
    return {
        controller: (parts[2] != undefined ? parts[2] : 'Home'),
        method: (( parts[3] != undefined && parts[3].length != 0 ) ? parts[3] : 'index') //Changed Line
    };
}

ترتیب چک کردن parts[3] توی شرط مهمه چون اول باید وجودش بررسی بشه بعد اگه وجود داشت طولش بررسی بشه.

با این تغییر‌ها این چهار آدرس باید بدون ارور پاسخ بدن در حالی که قبلا فقط آدرس اول بدون ارور بود:

http://localhost:8080/api/user
http://localhost:8080/api/user/
http://localhost:8080/api/user?q=1
http://localhost:8080/api/user/?q=1