کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت
دسته بندی
;
توسعه وب

Axios چیست و چه کاربردی در JavaScript دارد؟

Axios چیست و چه کاربردی در JavaScript دارد؟

Axios چیست و چه کاربردی در جاوااسکریپت دارد؟

فرض کن صفحه محصولات یک فروشگاه رو باز کردی. ظاهر صفحه اومده، ولی اسم محصولات، قیمت‌ها و موجودی هنوز نمایش داده نشده.

این اطلاعات معمولاً باید از سرور گرفته بشن.

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

Axios هم یکی از ابزارهاییه که این ارتباط بین جاوااسکریپت و API رو ساده‌تر می‌کنه.

اگر بخوایم خیلی ساده بگیم:

Axios یه کتابخانه جاوااسکریپته که باهاش می‌تونی درخواست HTTP برای API بفرستی و پاسخ سرور رو دریافت کنی.

مثلاً می‌تونی با Axios لیست محصولات رو بگیری، اطلاعات یه فرم رو برای سرور بفرستی، یه رکورد جدید ثبت کنی، اطلاعات قبلی رو تغییر بدی یا خطاهای ارتباط با API رو مدیریت کنی.

فقط یه نکته رو از همین اول روشن کنیم: Axios خودش زبان برنامه‌نویسی نیست، API نیست و بک‌اند هم نیست. Axios فقط ابزاریه که جاوااسکریپت می‌تونه برای ارتباط HTTP با سرور ازش استفاده کنه.

Axios دقیقاً چه مشکلی را حل می‌کند؟

فرض کن جاوااسکریپت قراره لیست محصولات رو از یه API بگیره.

پشت همین کار ساده چند مرحله وجود داره: باید درخواست ساخته بشه، برای سرور ارسال بشه، سرور جواب بده و در آخر جاوااسکریپت داده یا خطایی که برگشته رو پردازش کنه.

Axios کمک می‌کنه این رفت‌وبرگشت رو با کد ساده‌تر و مرتب‌تری انجام بدی.

مثلاً برای گرفتن محصولات می‌تونی بنویسی:

const response = await axios.get("/api/products");

حالا اگر فقط داده اصلی که API برگردونده رو بخوای:

console.log(response.data);

Axios فقط خود داده رو بهت نمی‌ده. اطلاعات دیگه‌ای مثل Status Code، Headerهای پاسخ و تنظیمات Request هم داخل response قرار دارن.

این موضوع توی پروژه واقعی مهمه. چون همیشه قرار نیست فقط بپرسیم «داده چی بود؟» بعضی وقت‌ها باید بفهمیم درخواست موفق بوده یا نه، سرور خطا داده یا اصلاً پاسخی دریافت نشده.

HTTP Client چیست؟

قبل از اینکه بیشتر وارد Axios بشیم، خوبه مفهوم HTTP Client رو روشن کنیم.

HTTP Client در اصل ابزاریه که به برنامه اجازه می‌ده از طریق HTTP با یه سرور یا API حرف بزنه.

مثلاً وقتی این درخواست رو می‌فرستیم:

GET /api/products

داریم به سرور می‌گیم: «لیست محصولات رو برام بفرست.»

یا وقتی این درخواست رو داریم:

POST /api/orders

معمولاً داریم یه سری اطلاعات جدید برای سرور می‌فرستیم؛ مثلاً اطلاعات یه سفارش که باید پردازش یا ذخیره بشه.

Axios یکی از ابزارهاییه که می‌تونه نقش HTTP Client رو در جاوااسکریپت داشته باشه.

البته تنها گزینه نیست. Fetch هم برای ارسال درخواست HTTP وجود داره و در مرورگرهای جدید به‌صورت داخلی در دسترسه.

نصب Axios و ارسال اولین درخواست

خب، حالا بریم سراغ استفاده واقعی از Axios.

اگر پروژه‌ات با npm مدیریت می‌شه، اول Axios رو نصب کن:

npm install axios

بعد می‌تونی داخل فایل جاوااسکریپت واردش کنی:

import axios from "axios";

اولین درخواست GET

برای اولین تست، می‌تونیم از JSONPlaceholder استفاده کنیم. JSONPlaceholder یه API آزمایشیه که برای تمرین مناسبه.

import axios from "axios";

async function getPost() {

    const response = await axios.get(
        "https://jsonplaceholder.typicode.com/posts/1"
    );

    console.log(response.data);
}

getPost();

حالا ببینیم این چند خط دقیقاً چه کار می‌کنن.

  • axios.get() یه درخواست GET می‌فرسته.
  • نتیجه درخواست به شکل یه Promise برمی‌گرده.
  • با await منتظر می‌مونیم تا نتیجه درخواست مشخص بشه.
  • وقتی پاسخ رسید، داخل متغیر response قرار می‌گیره.
  • داده اصلی API از طریق response.data در دسترسه.

فقط حواست باشه JSONPlaceholder یه سرویس تمرینیه. یعنی نباید انتظار داشته باشی دقیقاً مثل یه بک‌اند واقعی که به دیتابیس وصله رفتار کنه.

تفاوت response و response.data چیست؟

این یکی از چیزهاییه که اوایل کار با Axios خیلی‌ها رو گیج می‌کنه.

response و response.data یکی نیستن.

response کل پاسخی هست که Axios در اختیارت می‌ذاره.

ولی response.data فقط داده اصلیه که API داخل Body پاسخ فرستاده.

const response = await axios.get("/api/products");

console.log(response.status);

console.log(response.data);
مقدار کاربرد
response.data داده اصلی برگشتی از API
response.status کد وضعیت پاسخ مثل 200 یا 404
response.headers Headerهای پاسخ
response.config تنظیماتی که Request باهاش ارسال شده
response.request اطلاعات مربوط به Request

پس اگر فقط می‌خوای لیست محصولات رو روی صفحه نمایش بدی، احتمالاً بیشتر کارت با response.data هست.

ارسال اطلاعات با POST در Axios

تا اینجا فقط از سرور اطلاعات گرفتیم.

ولی توی پروژه واقعی خیلی وقت‌ها باید اطلاعاتی رو هم برای سرور بفرستی.

مثلاً کاربر یه فرم پر کرده و می‌خوای اطلاعاتش رو برای API ارسال کنی.

برای چنین کاری معمولاً از POST استفاده می‌کنیم:

import axios from "axios";

async function createPost() {

    const response = await axios.post(
        "https://jsonplaceholder.typicode.com/posts",
        {
            title: "Learning Axios",
            body: "My first Axios request",
            userId: 1
        }
    );

    console.log(response.data);
}

createPost();

این الگو توی پروژه واقعی می‌تونه برای کارهای مختلفی استفاده بشه:

  • ارسال فرم ثبت‌نام
  • ثبت سفارش
  • ساخت کاربر جدید
  • ثبت نظر
  • ذخیره اطلاعات جدید

فقط یه نکته مهم: Axios مسئول اعتبارسنجی اطلاعات یا ذخیره داده داخل دیتابیس نیست.

Axios فقط اطلاعات رو جابه‌جا می‌کنه.

اینکه مثلاً ایمیل معتبره یا نه، کاربر اجازه انجام عملیات رو داره یا نه و اطلاعات چطور داخل دیتابیس ذخیره بشن، مسئولیت بک‌اند شماست.

Promise، async و await چه نقشی دارند؟

وقتی یه درخواست برای سرور می‌فرستی، نتیجه همون لحظه آماده نیست.

درخواست باید به سرور برسه، سرور پردازشش کنه و جواب برگرده.

برای همین وقتی می‌نویسی:

const request = axios.get("/api/products");

متغیر request هنوز لیست محصولات نیست.

چیزی که Axios برگردونده یه Promise هست.

اگر ادامه تابع به نتیجه درخواست نیاز داشته باشه، می‌تونی از await استفاده کنی:

async function loadProducts() {

    const response = await axios.get("/api/products");

    console.log(response.data);
}

اینجا await باعث می‌شه ادامه همین تابع تا مشخص شدن نتیجه درخواست متوقف بشه.

ولی این به معنی متوقف شدن کل مرورگر نیست. کارهای دیگه‌ای که به نتیجه این Request وابسته نیستن می‌تونن ادامه پیدا کنن.

مدل ذهنی ساده اینه: درخواست رو بفرست؛ اگر ادامه این تابع به جواب API نیاز داره، با await منتظر نتیجه بمون؛ وقتی نتیجه رسید، ادامه همون تابع رو اجرا کن.

مدیریت خطا در Axios

توی پروژه واقعی نمی‌تونیم فرض کنیم همه Requestها همیشه موفق می‌شن.

کلی اتفاق ممکنه بیفته:

  • آدرس API اشتباه باشه.
  • سرور در دسترس نباشه.
  • API خطای 404 برگردونه.
  • سرور خطای 500 بده.
  • پاسخ خیلی طول بکشه.
  • مرورگر به خاطر CORS اجازه دسترسی به پاسخ رو نده.

برای همین بهتره Requestهای مهم رو با try/catch مدیریت کنی:

async function loadProducts() {

    try {

        const response = await axios.get("/api/products");

        console.log(response.data);

    } catch (error) {

        if (!axios.isAxiosError(error)) {

            console.error(
                "Unexpected error:",
                error
            );

            return;
        }

        if (error.response) {

            console.error(
                "HTTP error:",
                error.response.status
            );

            return;
        }

        if (error.request) {

            console.error(
                "Request sent, but no usable response was received."
            );

            return;
        }

        console.error(
            "Request setup error:",
            error.message
        );
    }
}

توی این مثال چند حالت رو از هم جدا کردیم:

  1. سرور جواب داده، ولی جوابش یه پاسخ خطاست.
  2. Request ارسال شده، ولی پاسخ قابل استفاده‌ای نگرفتیم.
  3. موقع آماده کردن Request مشکلی پیش اومده.

Axios به‌صورت پیش‌فرض پاسخ‌های خارج از محدوده موفق 2xx رو وارد مسیر خطا می‌کنه.

برای درخواست‌ها زمان انتظار مشخص کن

بهتره یه Request شبکه تا ابد منتظر نمونه.

می‌تونی برای Requestها Timeout تعیین کنی:

const api = axios.create({

    baseURL: "/api",

    timeout: 5000

});

اینجا حداکثر زمان انتظار رو ۵ ثانیه در نظر گرفتیم.

axios.create() چه کاربردی دارد؟

فرض کن پروژه بزرگ‌تر شده و تعداد Requestهات زیاد شده.

مثلاً یه جا محصولات رو می‌گیری، یه جا سفارش‌ها رو و یه جا کاربران رو.

اگر هر بار آدرس کامل API رو بنویسی، خیلی زود کدت پر از تکرار می‌شه:

axios.get("https://api.example.com/products");

axios.get("https://api.example.com/orders");

axios.get("https://api.example.com/users");

بهتره تنظیمات مشترک رو یه بار تعریف کنی:

const api = axios.create({

    baseURL: "https://api.example.com",

    timeout: 5000

});

بعد توی قسمت‌های مختلف پروژه بنویسی:

const response = await api.get("/products");

با این کار:

  • Base URL فقط یه بار تعریف می‌شه.
  • Timeout رو یه جا تنظیم می‌کنی.
  • تنظیمات مشترک تکرار نمی‌شن.
  • تغییر تنظیمات بعداً راحت‌تر می‌شه.

توی پروژه‌های بزرگ‌تر می‌تونی از Interceptor هم استفاده کنی.

مثلاً می‌تونی قبل از ارسال Request یه Header مشترک اضافه کنی یا بعضی خطاها رو بعد از دریافت Response به شکل متمرکز مدیریت کنی.

ولی Interceptor رو فقط وقتی اضافه کن که واقعاً یه نیاز مشترک توی پروژه داشته باشی.

Axios یا Fetch؛ کدام را انتخاب کنیم؟

اینجا معمولاً یه سؤال خیلی طبیعی پیش میاد:

«وقتی Fetch داخل خود مرورگر هست، چرا باید Axios نصب کنیم؟»

Fetch برای خیلی از پروژه‌ها کاملاً کافیه.

Axios یه کتابخانه جداست، ولی بعضی قابلیت‌ها رو آماده‌تر در اختیارت می‌ذاره.

موضوع Fetch Axios
نیاز به نصب نداره داره
خواندن JSON معمولاً response.json() معمولاً response.data
پاسخ‌های 404 و 500 باید خودت وضعیت رو بررسی کنی به‌صورت پیش‌فرض وارد مسیر خطا می‌شن
تنظیمات مشترک باید ساختارش رو خودت ایجاد کنی axios.create()
Interceptor داخلی نداره داره
Requestهای ساده مناسبه مناسبه

یه تفاوت مهم اینه که در Fetch، پاسخ 404 یا 500 به‌تنهایی باعث Reject شدن Promise نمی‌شه.

باید خودت Status پاسخ رو بررسی کنی.

ولی Axios به‌صورت پیش‌فرض پاسخ‌های خارج از محدوده 2xx رو وارد مسیر خطا می‌کنه.

اگر فقط چند Request ساده داری، Fetch می‌تونه کاملاً کافی باشه.

ولی اگر تعداد Requestهات زیاده و Base URL، Timeout، تنظیمات مشترک یا مدیریت متمرکز Request و Response برات مهمه، Axios می‌تونه کارت رو مرتب‌تر کنه.

پس هیچ‌کدوم همیشه بهتر نیستن؛ انتخاب به نیاز پروژه بستگی داره.

اتصال Axios به ASP.NET Core Web API

حالا بریم یه قدم واقعی‌تر جلو و Axios رو به یه ASP.NET Core Web API وصل کنیم.

فرض کن یه API داریم که لیست محصولات رو برمی‌گردونه و می‌خوایم با JavaScript و Axios اطلاعات رو بگیریم.

مرحله اول: ساخت پروژه

dotnet new webapi --use-controllers -o AxiosDemo

cd AxiosDemo

برای اینکه مثال ساده بمونه، فعلاً دیتابیس اضافه نمی‌کنیم.

مرحله دوم: تنظیم Program.cs

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

var app = builder.Build();

app.UseHttpsRedirection();

app.UseDefaultFiles();

app.UseStaticFiles();

app.MapControllers();

app.Run();

AddControllers() سرویس‌های لازم برای Controllerها رو ثبت می‌کنه و MapControllers() Routeهای اون‌ها رو فعال می‌کنه.

مرحله سوم: ساخت API محصولات

فایل Controllers/ProductsController.cs رو بساز:

using Microsoft.AspNetCore.Mvc;

namespace AxiosDemo.Controllers;

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    [HttpGet]
    public IActionResult GetProducts()
    {
        ProductDto[] products =
        {
            new ProductDto
            {
                Id = 1,
                Name = "Laptop",
                Price = 1200
            },

            new ProductDto
            {
                Id = 2,
                Name = "Mouse",
                Price = 25
            }
        };

        return Ok(products);
    }
}

public class ProductDto
{
    public int Id { get; set; }

    public string Name { get; set; } = string.Empty;

    public decimal Price { get; set; }
}

چون اسم Controller ما ProductsController هست و Route رو به شکل api/[controller] تعریف کردیم، آدرس API می‌شه:

GET /api/products

خروجی تقریباً این شکلیه:

[
    {
        "id": 1,
        "name": "Laptop",
        "price": 1200
    },
    {
        "id": 2,
        "name": "Mouse",
        "price": 25
    }
]

مرحله چهارم: ساخت صفحه ساده

داخل پروژه پوشه wwwroot رو بساز و بعد فایل wwwroot/index.html رو ایجاد کن:

<!doctype html>

<html lang="fa" dir="rtl">

<head>

    <meta charset="utf-8">

    <meta
        name="viewport"
        content="width=device-width, initial-scale=1">

    <title>Axios Demo</title>

    <script
        src="https://cdn.jsdelivr.net/npm/axios@1.20.0/dist/axios.min.js">
    </script>

</head>

<body>

    <h1>Products</h1>

    <button id="btnLoadProducts">
        Load Products
    </button>

    <pre id="result"></pre>

    <script src="app.js"></script>

</body>

</html>

بعد فایل wwwroot/app.js رو بساز:

const api = axios.create({

    baseURL: "/api",

    timeout: 5000

});

const button =
    document.querySelector("#btnLoadProducts");

const result =
    document.querySelector("#result");

button.addEventListener(
    "click",
    loadProducts
);

async function loadProducts() {

    result.textContent = "Loading...";

    try {

        const response =
            await api.get("/products");

        result.textContent =
            JSON.stringify(
                response.data,
                null,
                2
            );

    } catch (error) {

        result.textContent =
            "Failed to load data.";
    }
}

حالا پروژه رو اجرا کن:

dotnet run

آدرس محلی پروژه رو توی مرورگر باز کن و روی دکمه دریافت محصولات بزن.

کاربر کلیک می‌کنه، loadProducts() اجرا می‌شه، Axios به /api/products Request می‌فرسته، Controller درخواست رو می‌گیره و JSON برمی‌گردونه.

بعد Axios پاسخ رو به JavaScript می‌ده و اطلاعات داخل صفحه نمایش داده می‌شن.

CORS چیست و چه ارتباطی با Axios دارد؟

توی مثال قبلی، صفحه و API از یه برنامه اجرا می‌شدن.

ولی فرض کن فرانت‌اند روی این آدرس باشه:

http://localhost:5173

و بک‌اند روی این آدرس:

https://localhost:7001

حالا دو Origin مختلف داریم و CORS وارد ماجرا می‌شه.

CORS مخفف Cross-Origin Resource Sharing هست.

خیلی ساده، CORS مشخص می‌کنه مرورگر چه زمانی اجازه بده JavaScript یه صفحه به منابع Origin دیگه‌ای دسترسی داشته باشه.

Axios مشکل CORS رو حل نمی‌کنه.

Axios فقط Request رو ارسال می‌کنه.

مرورگر قوانین CORS رو اعمال می‌کنه و بک‌اند باید مشخص کنه چه Originهایی اجازه دسترسی دارن.

مثلاً در ASP.NET Core می‌تونی بنویسی:

builder.Services.AddCors(options =>
{
    options.AddPolicy(
        "Frontend",
        policy =>
        {
            policy
                .WithOrigins("http://localhost:5173")
                .AllowAnyHeader()
                .AllowAnyMethod();
        });
});

و بعد:

app.UseCors("Frontend");

app.MapControllers();

توی محیط واقعی فقط Originهایی رو مجاز کن که واقعاً به API نیاز دارن.

خطاهای رایج هنگام کار با Axios

۱. آدرس API اشتباهه

فرض کن Endpoint واقعی اینه:

/api/products

ولی نوشتی:

axios.get("/products");

اگر baseURL هم درست تنظیم نشده باشه، Request به مسیر اشتباهی می‌ره.

یکی از اولین جاهایی که باید بررسی کنی، بخش Network داخل DevTools مرورگره.

۲. await رو فراموش کردی

const response =
    axios.get("/api/products");

اینجا response جواب نهایی API نیست؛ یه Promise هست.

اگر نتیجه رو در همون تابع لازم داری:

const response =
    await axios.get("/api/products");

۳. response و response.data رو با هم قاطی کردی

اگر فقط داده API رو می‌خوای:

console.log(response.data);

خود response اطلاعات بیشتری مثل Status و Headerها هم داره.

۴. فقط حالت موفق رو نوشتی

توی پروژه واقعی باید مسیر خطا رو هم طراحی کنی.

API ممکنه Down باشه، خطای 500 بده، اینترنت قطع باشه یا Request به Timeout بخوره.

چه زمانی بهتر است از Axios استفاده نکنیم؟

Axios رو فقط به این دلیل که معروفه وارد پروژه نکن.

اگر پروژه فقط یکی دو تا Request ساده داره، Fetch ممکنه کاملاً کارت رو راه بندازه.

همین‌طور اگر ابزار دیگه‌ای توی پروژه مسئول Request، Cache یا Retry هست، اول ببین اضافه کردن Axios واقعاً چه مشکلی رو حل می‌کنه.

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

تمرین عملی Axios

اگر می‌خوای مطمئن بشی Axios رو واقعاً فهمیدی، این تمرین‌ها رو انجام بده:

تمرین معیار موفقیت
پروژه نمونه رو اجرا کن صفحه در مرورگر باز بشه
روی دریافت محصولات کلیک کن دو محصول نمایش داده بشن
مسیر API رو عمداً اشتباه کن خطا رو در Network ببینی
await رو حذف کن ببینی مقدار برگشتی Promise هست
response.data و response.status رو چاپ کن تفاوت داده و Status رو توضیح بدی
مقدار timeout رو کم کن مسیر مدیریت خطا رو ببینی

اگر بتونی توضیح بدی Request از کجا شروع می‌شه، چه APIای اون رو دریافت می‌کنه و داده چطور دوباره به صفحه برمی‌گرده، مفهوم اصلی Axios رو گرفتی.

جایگاه Axios در یک پروژه واقعی

فرض کن یه فروشگاه اینترنتی داریم.

بک‌اند با ASP.NET Core Web API ساخته شده و Endpointهایی برای گرفتن محصولات، ثبت سفارش و مدیریت کاربران داره.

سمت فرانت‌اند هم باید با همین APIها ارتباط برقرار کنیم.

Axios می‌تونه Requestهای HTTP رو از JavaScript برای API بفرسته و Responseها رو دوباره به JavaScript برگردونه.

یه نکته معماری مهم اینه که مرورگر یا Axios مستقیماً با دیتابیس حرف نمی‌زنن.

جریان معمول این شکلیه:

رابط کاربری درخواست رو شروع می‌کنه، JavaScript از طریق Axios درخواست رو به Web API می‌فرسته، بک‌اند منطق لازم رو اجرا می‌کنه و اگر لازم باشه به دیتابیس وصل می‌شه.

بعد نتیجه از طریق API برمی‌گرده و JavaScript اون رو داخل صفحه نمایش می‌ده.

این مدل ذهنی از حفظ کردن چند دستور Axios خیلی مهم‌تره.

بعد از Axios چه چیزی یاد بگیریم؟

اگر هدفت فقط این بود که بفهمی Axios چیه و چطور یه API رو باهاش صدا بزنی، تا اینجا بخش اصلی رو گرفتی.

قدم بعدی به مسیری که می‌خوای بری بستگی داره.

اگر سمت فرانت‌اند کار می‌کنی، بهتره این موضوعات رو جدی‌تر یاد بگیری:

  • DOM
  • فرم‌ها
  • Promise
  • async/await
  • مدیریت خطا
  • کار با API
  • مدیریت وضعیت رابط کاربری

اگر هدفت Backend یا Full Stack شدنه، فقط مصرف API کافی نیست.

باید بتونی:

  • API بسازی.
  • ورودی‌ها رو اعتبارسنجی کنی.
  • Status Code مناسب برگردونی.
  • خطاها رو مدیریت کنی.
  • به دیتابیس وصل بشی.
  • Authentication و Authorization رو پیاده‌سازی کنی.
  • فرانت‌اند رو به بک‌اند وصل کنی.

از Axios تا ساخت یک پروژه کامل

اگر نمی‌خوای فقط دستورهای Axios رو حفظ کنی، قدم بعدی اینه که همین ارتباط رو داخل یه پروژه واقعی تمرین کنی.

یعنی خودت API رو بسازی و بعد JavaScript و Axios رو به همون API وصل کنی.

توی دوره پروژه‌محور C# و ASP.NET Core تحلیل‌داده هم همین مسیر تمرین می‌شه؛ Web API ساخته می‌شه و رابط پروژه از طریق JavaScript و Axios با بک‌اند ارتباط می‌گیره.

مشاهده دوره پروژه‌محور C# و ASP.NET Core

سوالات متداول درباره Axios

Axios چیست؟

Axios یه کتابخانه جاوااسکریپته که برای ارسال Requestهای HTTP به API و گرفتن Response از سرور استفاده می‌شه.

آیا Axios بخشی از JavaScript است؟

نه. Axios یه کتابخانه جداست و باید اون رو به پروژه اضافه کنی.

آیا Axios فقط برای React است؟

نه. Axios وابسته به React نیست.

می‌تونی توی JavaScript معمولی، برنامه‌های فرانت‌اند و Node.js هم ازش استفاده کنی.

آیا Axios با C# کار می‌کند؟

Axios کد C# رو اجرا نمی‌کنه.

ولی می‌تونه با یه Web API که با C# و ASP.NET Core ساخته شده از طریق HTTP ارتباط برقرار کنه.

Axios بهتر است یا Fetch؟

جواب ثابت و یکسانی برای همه پروژه‌ها وجود نداره.

برای چند Request ساده، Fetch می‌تونه کافی باشه.

اگر Base URL، Timeout، Interceptor و تنظیمات مشترک برات مهمه، Axios می‌تونه گزینه مناسبی باشه.

آیا Axios مشکل CORS را حل می‌کند؟

نه.

Axios فقط Request رو ارسال می‌کنه. CORS توسط مرورگر بررسی می‌شه و تنظیماتش باید سمت Backend درست انجام بشه.

چرا axios.get() فوراً داده را برنمی‌گرداند؟

چون Request شبکه یه عملیات غیرهمزمانه.

axios.get() یه Promise برمی‌گردونه.

بعد می‌تونی با await یا then() نتیجه نهایی رو بگیری.

چرا معمولاً از response.data استفاده می‌کنیم؟

چون response کل اطلاعات Response رو داره، ولی response.data فقط داده اصلی API رو در اختیارت می‌ذاره.

آیا باید در همه پروژه‌ها Axios نصب کنیم؟

نه.

Axios رو وقتی وارد پروژه کن که واقعاً یه نیاز رو برات حل می‌کنه.

جمع‌بندی Axios

اگر Axios رو فقط با axios.get() و axios.post() یاد بگیری، بخش مهم ماجرا رو از دست می‌دی.

چیزی که واقعاً باید بفهمی اینه که Request از کجا شروع می‌شه، چطور به API می‌رسه، بک‌اند باهاش چه کار می‌کنه و Response چطور دوباره به JavaScript برمی‌گرده.

Axios فقط یکی از ابزارهاییه که این ارتباط رو ساده‌تر می‌کنه.

برای یه پروژه ساده، ممکنه Fetch تمام چیزی باشه که لازم داری.

برای پروژه‌ای که Requestهای زیادی داره و به Base URL، Timeout، تنظیمات مشترک یا مدیریت متمرکز ارتباط با API نیاز داره، Axios می‌تونه ساختار کارت رو مرتب‌تر کنه.

پس مسئله اصلی این نیست که «Axios بهتره یا Fetch؟»

مسئله اصلی اینه که بدونی پروژه دقیقاً چه نیازی داره و ابزاری رو انتخاب کنی که اون نیاز رو با کمترین پیچیدگی حل کنه.

نظرات شما

نظرات خود را ثبت کنید...






دوره های پرطرفدار