تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

    ایجاد درخواست‌های HTTP با Nodejs

    ایحاد درخواست‌های http با nodejs

    Node.js یکی از محبوب‌ترین فریم‌ورک‌های زبان جاوااسکریپت است که امروزه مورد توجه بسیاری از توسعه‌دهندگان قرار گرفته و از آن برای ایجاد برنامه‌های مبتنی بر سرور استفاده می‌کنند. این برنامه‌ها به نوبه خود، در ارائه داده‌ها و اطلاعات مختلف به کاربر، کمک می‌کنند. اما کاربر چگونه درخواست‌‌های خود را به سرور ارسال می‌کند؟ این کار با استفاده از درخواست‌های HTTP انجام شده و درنهایت روند توسعه برنامه برای توسعه‌دهندگان راحت‌تر می‌شود.

    موضوع‌هایی که در این مقاله به آنها می‌پردازیم، عبارتند از:

    1. درخواست‌های HTTP در Node.js
    2. ایجاد درخواست‌های HTTP در Node.js
    3. آبجکت request در Node.js

    درخواست‌های HTTP در Node.js

    درخواست HTTP درواقع پیامی است که از طریق پروتکل HTTP (Hypertext Transfer Protocol) از کاربر به سمت سرور ارسال می‌شود و می‌توانید آن را به عنوان یک information packet میان دو کامپیوتر در نظر بگیرید که مجموعه‌ای از داده‌ها را در خود جای داده است. بعد از پردازش درخواست اول که از کاربر به سرور ارسال شده، پاسخ درخواست به عنوان یک information packet به سمت کاربر ارسال می‌شود. این packet شامل تمام داده‌های لازم درخواست شده توسط کاربر است و به عنوان response یا پاسخ شناخته می‌شود. البته در این مقاله بر روی قسمت درخواست (request) تمرکز خواهیم کرد.

    چرخه درخواست‌ها و پاسخ‌های http میان کاربر و سرور

    درخواست HTTP یکی از حالت‌های مرورگر برای انتقال داده‌ها بین کاربر و سرور است. این داده‌ها می‌توانند وبسایت، API، تصویر، متن و … باشند. معمولا درخواست‌های HTTP از اسکلت زیر تشکیل شده‌اند:

    1. Request Line
    2. Headers
    3. بدنه درخواست (اختیاری)

    ماژول‌های مختلفی وجود دارد که می‌توانید با آنها درخواست‌های HTTP را ایجاد کرده و یا درخواست‌های را در وب سرور، پردازش کنید.

    ایجاد درخواست‌های HTTP در Node.js

    سه ماژول محبوب که برای ایجاد درخواست‌های HTTP در Node.js از آنها استفاده می‌شود، عبارتند از:

    1. ماژول HTTP
    2. ماژول Request
    3. AXIOS

    همچنین در ادامه مقاله، به ترتیب با این ماژول‌ها آشنا می‌شویم.

    1) ماژول HTTP

    ماژول http

    ماژول HTTP یک روش استاندارد و قدیمی برای ایجاد درخواست‌های HTTP است. این ماژول به صورت پیش‌فرض در Node.js وجود دارد و شما بدون نیاز به نصب هیچ‌گونه وابستگی‌ای می‌توانید با وارد کردن آن به پروژه کار را شروع کنید.

    مبتدیان در استفاده از Node.js تمایل دارند از http.get یا https.get برای ارسال درخواست GET به API استفاده کنند. یکی از مزیت‌های اصلی این ماژول، داخلی بودن آن است که نیاز شما به استفاده از پکیج‌های دیگر را کاهش می‌دهد و همچنین روند را کمی سریع‌تر می‌کند. کدهای زیر، مثالی برای استفاده از ماژول HTTP است:

    const https = require("https");
    const url = "https://my-json-server.typicode.com/edurekaDemo/noderequest/db";
    https.get(url, res => {
        res.setEncoding("utf8");
        let body = "";
        res.on("data", data => {
            body += data;
        });
        res.on("end", () => {
            body = JSON.parse(body);
            console.log(body);
        });
    });

    خروجی کدهای بالا به صورت زیر است:

    نتیجه نهایی استفاده از ماژول http

    البته علاوه بر مزیت‌های این ماژول، می‌بایست معایب آن را نیز بدانیم. ماژول HTTP از promiseها پشتیبانی نمی‌کند پس استفاده از آن کمی ناشیانه و غیر قابل اعتماد است.

    2) ماژول Request

    ماژول request

    ماژول Request یکی از محبوب‌ترین پکیج‌های موجود در Node.js است. این پکیج در مقایسه با ماژول HTTP، کاربر پسندانه‌تر است و به همین دلیل توسعه‌دهندگان بیشتری به آن اعتماد می‌کنند. این ماژول به گونه‌ای طراحی شده که بتوانید درخواست HTTP خود را به ساده‌ترین شکل ممکن ایجاد کنید. ماژول Request ارتقا یافته ماژول HTTP است و با استفاده از آن می‌توانید به تمام قابلیت‌های موجود در ماژول HTTP با روشی ساده‌تر دسترسی داشته باشید.

    قبل از اینکه بتوانید با استفاده از این ماژول درخواست HTTP خود را ایجاد کنید، می‌بایست با دستور زیر آن را در سیستم خود نصب کنید:

    npm i request

    و پس از نصب ماژول می‌توانید به صورت زیر از ماژول Request استفاده کنید:

    const request = require("request");
    const url = "https://my-json-server.typicode.com/edurekaDemo/noderequest/db";
    request.get(url, (error, response, body) => {
        let json = JSON.parse(body);
        console.log(body);
    });

    درنهایت، خروجی کدهای بالا به صورت زیر خواهند بود:

    نتیجه نهایی استفاده از ماژول request

    بنابراین اگر به دنبال ماژول بدون دردسری هستید، انتخاب Request می‌تواند بهترین گزینه باشد اما اگر به دنبال پشتیبانی از promiseها هستید، باید بگویم که این ماژول نیز از promiseها پشتیبانی نمی‌کند.

    3) ماژول Axios

    ماژول axios

    Axios یک HTTP client مبتنی بر promise است که می‌توان از آن در مرورگر و همچنین Node.js استفاده کرد زیرا Axios یک API برای مدیریت XMLHttpRequest و node HTTP interface ارائه می‌هد. این پکیج معمولا هنگامی مورد استفاده قرار می‌گیرد که توسعه‌دهنده با یک سری رویداد پیچیده روبرو باشد و از آنجا که نوشتن کدها به صورت asynchronous بسیار گیج کننده است، Axios با پشتیبانی از promiseها به بهترین گزینه برای حل مشکلات مختلف، تبدیل شده است.

    قبل از استفاده از ماژول Axios باید آن را با استفاده از دستور زیر در سیستم خود نصب کنید:

    npm i axios

    پس از نصب موفقیت آمیز این ماژول می‌توانید به صورت زیر از آن در کدهای خود استفاده کنید:

    const axios = require("axios");
    const url = "https://my-json-server.typicode.com/edurekaDemo/noderequest/db";
    const getData = async url => {
        try {
            const response = await axios.get(url);
            const data = response.data;
            console.log(data);
        } catch (error) {
            console.log(error);
        }
    };
    getData(url);

    درنهایت خروجی‌ کدهای بالا به صورت زیر است:

    نتیجه نهایی استفاده از ماژول axios

    آبجکت request در Node.js

    آبجکت request در Node.js به بازیابی (retrieving) مقادیری که از طریق مرورگر کاربر به سرور Node.js فرستاده شده، کمک می‌کند. مثلا اطلاعات کاربر را نگه می‌دارد و در ایجاد صفحه‌های پویای وب به کار می‌آید. همچنین بر اساس ورودی‌های کاربر قادر به انجام عملیات مختلفی در سمت سرور است. مثلا می‌توانید از آبجکت request برای گرفتن اطلاعاتی مثل URL، request header و داده‌های درخواست HTTPای که از سمت کاربر ارسال شده، استفاده کنید. جدول زیر محبوب‌ترین ویژگی‌های مورد استفاده‌ی آبجکت request است.

    ویژگیتوضیحات
    req.appاین ویژگی به کمک middleware استفاده از رفرنس‌های فعلی برنامه‌‌ی Express را ممکن می‌کند.
    req.baseUrlاز این ویژگی برای دریافت baseUrl یک Route خاص استفاده می‌شود.
    req.bodyاز این ویژگی برای دریافت مقادیر key-value در بدنه درخواست ارسالی از کاربر استفاده می‌شود.
    req.paramsاز این ویژگی برای دریافت آبجکت‌هایی که تحت عنوان پارامتر‌های درخواست هستند، استفاده می‌شود.
    req.pathبرای دریافت URL درخواست شده می‌توانید از این ویژگی استفاده کنید.
    req.protocolاین ویژگی یک string از پروتکل‌هایی مانند HTTP یا HTTPS که توسط TLS درخواست می‌شوند را در اختیار ما قرار می‌دهد.
    req.secureاین ویژگی یک مقدار boolean در اختیار ما قرار می‌دهد، مثلا اگر اتصال TLS موفقیت آمیز بوده باشد، مقدار آن برابر با true و در غیر این صورت، false است.

    منبع: https://www.edureka.co/blog/node-js-requests

    برچسب‌ها:

    ســــــــــــــــــــــال‌هاست که هستیم

    ۶ سال در کنار شما تجربه جمع کردیم. تازه در ابتدای مسیر هستیم، مسیر ساخت آینده.

    جمع‌مـــــــــــان، جمع است

    بیش از ۴۰ هزار توسعه‌دهنده و صاحبان کسب و کار در جمع ما هستند. جای شما خالی‌ست...

    خدمات رایگان لیارا

    ۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

    ۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

    هاست رایگان برای دیتابیس‌

    دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

    سرویس DNS رایگان

    به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

    ۱۰۰ هزار تومان اعتبار اولیه

    بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

    ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

    در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید. (به‌همراه دسترسی SMTP)

    هاست رایگان برای انواع وبسایت

    تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

    همراه شما هستیم

    در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
    تلفن واحد فروش:
    ۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
    تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)