Axios: vad är det, HTTP-förfrågningar och grunderna i att arbeta med API

Författare: IT Sectr Publicerad: 2026-03-07 Lästid: 8 min

Axios är en HTTP-klient med öppen källkod för JavaScript och TypeScript som fungerar både i webbläsaren och i Node.js-miljön. Biblioteket tillhandahåller ett bekvämt Promise-baserat gränssnitt för att skicka HTTP-förfrågningar med stöd för interceptorer, automatisk JSON-serialisering och möjlighet att avbryta förfrågningar. Enligt det officiella förvaret på GitHub har projektet över 100 000 stjärnor. Axios är ett av de mest populära biblioteken för att arbeta med REST API i JavaScript-ekosystemet.

Huvudpunkter

  • Axios — HTTP-klient baserad på Promise API för webbläsare och Node.js med TypeScript-stöd
  • Interceptorer — gör det möjligt att ändra förfrågningar och svar innan de bearbetas i koden
  • Automatisk transformation — biblioteket parsar automatiskt JSON i svaret och serialiserar data i förfrågan
  • Avbryta förfrågningar — inbyggd AbortController-mekanism för att avbryta fastnade eller onödiga förfrågningar
  • Filuppladdning — stöd för uppladdningsförlopp via onUploadProgress och onDownloadProgress

Vad är Axios?

Axios är ett JavaScript-bibliotek för att utföra HTTP-förfrågningar från webbläsaren och Node.js-miljön. Det är byggt ovanpå XMLHttpRequest i webbläsaren och http-modulen i Node.js och tillhandahåller ett enhetligt API för båda plattformarna.

Den största fördelen med Axios jämfört med inbyggd fetch är automatisk JSON-bearbetning, stöd för interceptorer och bekvämare felhantering. Till skillnad från fetch kräver Axios inte två .then-anrop för att få JSON-svaret och kastar automatiskt ett undantag vid HTTP-fel (4xx, 5xx).

Biblioteket stöder alla viktiga HTTP-metoder: GET, POST, PUT, DELETE, PATCH och HEAD. Det kan användas både i enkla projekt och i stora företagsapplikationer med hundratusentals förfrågningar dagligen.

Nyckelegenskaper hos Axios

  • Promise API — alla operationer returnerar Promise, vilket förenklar asynkron kod
  • TypeScript-stöd — full typning för alla metoder och konfigurationer
  • Interceptorer — middleware för bearbetning av förfrågningar och svar
  • Transformation — automatisk konvertering av data vid in- och utmatning

Axios arkitektur och funktionsprincip

Axios arkitektur bygger på konceptet med adaptrar (adapters). Biblioteket abstraherar transportlagret: i webbläsaren används XMLHttpRequest, i Node.js — http- eller https-modulen. Detta möjliggör ett enhetligt gränssnitt oavsett körningsmiljö.

Varje förfrågan går genom en kedja av interceptorer som kan ändra konfigurationen av förfrågan eller svaret. Efter interceptorerna skickas förfrågan till adaptern som utför det faktiska HTTP-anropet. Svaret går sedan genom svarsinterceptorerna innan det når applikationskoden.

Livscykel för en Axios-förfrågan

  1. Skapa konfiguration — metod, URL, rubriker, förfrågans brödtext
  2. Begäran interceptor — ändra konfiguration, lägga till token
  3. HTTP-anrop — utförande via webbläsar- eller Node.js-adapter
  4. Svar interceptor — transformera svar, hantera fel
  5. Returnera resultat — Promise löses med data eller avvisas

Axios huvudfunktioner

Axios innehåller många inbyggda funktioner som gör det till ett bekvämt val för att arbeta med HTTP i mobil- och webbapplikationer. Låt oss titta på de viktigaste.

Automatisk datatransformation

När en förfrågan skickas konverterar Axios automatiskt ett JavaScript-objekt till en JSON-sträng med hjälp av JSON.stringify. När ett svar tas emot parsar biblioteket tillbaka JSON till ett objekt. Detta befriar utvecklaren från manuell serialisering och deserialisering av data.

CSRF-skydd

I webbläsarmiljön lägger Axios automatiskt till XSRF-TOKEN-rubriker från cookie, vilket skyddar applikationen mot förfalskning av begäranden mellan webbplatser. För detta räcker det att konfigurera servern att skicka token i en cookie med namnet XSRF-TOKEN.

Timeout och avbryta förfrågningar

Biblioteket stöder inställning av timeout via parametern timeout och avbrytande av förfrågan via AbortController. Detta är särskilt viktigt i mobilapplikationer med instabil anslutning, där fastnade förfrågningar förbrukar batteri och data.

Installera och konfigurera Axios

Installation av Axios görs via vilken pakethanterare som helst. Biblioteket finns i npm-registret och kan anslutas både i Node.js och i webbläsarprojekt. För TypeScript ingår typerna i huvudpaketet, inga ytterligare beroenden krävs.

Efter installation kan du skapa en instans med grundkonfiguration: bas-URL, standard timeout, gemensamma rubriker. Detta gör att du inte behöver upprepa samma parametrar i varje förfrågan och centralt hantera HTTP-klientens inställningar.

bash
# Installation via npm
npm install axios

# Installation via yarn
yarn add axios

# Installation via pnpm
pnpm add axios

Skapa en instans med konfiguration

Det rekommenderas att skapa en separat Axios-instans för varje API-tjänst. Detta gör det möjligt att ställa in bas-URL, standardrubriker och timeout som kommer att tillämpas på alla förfrågningar från denna instans utan upprepning i varje anrop.

typescript
import axios from 'axios';

const api = axios.create({
  baseURL: 'https://api.example.com/v1',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
});

Kodexempel med Axios

Exempel på förfrågningar visar de viktigaste användningsmönstren för Axios. Alla exempel använder async/await-syntax som gör asynkron kod mer läsbar jämfört med .then()-kedjor.

GET-förfrågan med parametrar

För att hämta data från servern används metoden axios.get. Frågeparametrar skickas via params-objektet, som automatiskt omvandlas till en query-sträng. Svaret innehåller data i fältet data, status i status och rubriker i headers.

typescript
interface User {
  id: number;
  name: string;
  email: string;
}

async function getUsers() {
  try {
    const response = await api.get<User[]>('/users', {
      params: { page: 1, limit: 10 }
    });
    return response.data;
  } catch (error) {
    console.error('Fel vid laddning av användare', error);
    throw error;
  }
}

POST-förfrågan med brödtext

För att skicka data till servern används axios.post. Det andra argumentet är ett objekt med data som Axios automatiskt serialiserar till JSON. Innehållstypen Content-Type är som standard inställd på application/json.

typescript
interface CreateUserDto {
  name: string;
  email: string;
  role: string;
}

async function createUser(data: CreateUserDto) {
  const response = await api.post<User>('/users', data);
  return response.data;
}

Interceptorer

Interceptorer är middleware-funktioner som körs för varje förfrågan eller svar. De gör det möjligt att lägga till auktoriseringstoken, logga förfrågningar och centralt hantera fel. Begäran-interceptorn lägger till Authorization-rubriken med en token från lagringen.

typescript
// Begäran-interceptor — lägger till auktoriseringstoken
api.interceptors.request.use(
  (config) => {
    const token = getToken();
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => Promise.reject(error)
);

// Svar-interceptor — hanterar 401-fel
api.interceptors.response.use(
  (response) => response,
  (error) => {
    if (error.response?.status === 401) {
      redirectToLogin();
    }
    return Promise.reject(error);
  }
);

Felhantering i Axios

Felhantering i Axios bygger på undantagsmekanismen. Till skillnad från fetch fångar Axios automatiskt HTTP-fel (4xx, 5xx) och skickar dem till catch-blocket. Felobjektet innehåller information om serverns svar, förfrågan och körningskontext.

Det är viktigt att skilja mellan tre typer av fel: server svarsfel (response), förfrågefel (request) och konfigurationsfel (config). Det första uppstår vid ett framgångsrikt HTTP-anrop med felkod, det andra — när det inte finns något svar från servern, det tredje — vid felaktig konfiguration av förfrågan.

typescript
import axios, { AxiosError } from 'axios';

async function safeRequest() {
  try {
    return await api.get('/data');
  } catch (error) {
    if (error instanceof AxiosError) {
      if (error.response) {
        console.warn('Svarfel', error.response.status);
      } else if (error.request) {
        console.warn('Inget svar från servern');
      } else {
        console.warn('Konfigurationsfel');
      }
    }
  }
}
HTTP-metod Axios-metod Beskrivning
GET axios.get(url, config) Hämta data
POST axios.post(url, data, config) Skapa resurs
PUT axios.put(url, data, config) Uppdatera resurs
DELETE axios.delete(url, config) Ta bort resurs
PATCH axios.patch(url, data, config) Delvis uppdatering

Jämförelse av Axios med Fetch API

Jämförelse av Axios med det inbyggda Fetch API hjälper till att förstå när varje teknik är lämplig. Fetch är ett inbyggt webbläsar-API som inte kräver installation. Axios är ett tredjepartsbibliotek med ytterligare funktioner. För enkla förfrågningar räcker fetch, för komplexa applikationer med interceptorer och centraliserad felhantering är Axios bekvämare.

Fetch betraktar inte HTTP-fel (4xx, 5xx) som undantag — du måste kontrollera response.ok. Fetch kräver två .then()-anrop för att få JSON: response.json() returnerar sedan ett Promise med data. Axios gör detta automatiskt. Fetch stöder inte filuppladdningsförlopp utan ytterligare polyfill. Axios har inbyggda onUploadProgress och onDownloadProgress.

I Node.js är Fetch tillgängligt från version 18 som en experimentell funktion, medan Axios fungerar stabilt från Node.js 10. För projekt som stöder äldre Node.js-versioner är valet uppenbart till förmån för Axios. För moderna webbläsarprojekt utan komplex förfrågehantering kan fetch vara tillräckligt.

Vanliga frågor

Hur skiljer sig Axios från fetch?

Axios parsar automatiskt JSON, kastar undantag vid HTTP-fel och stöder interceptorer. Fetch kräver två .then-anrop för JSON och behandlar inte 4xx/5xx som fel. Axios är också enklare att konfigurera via ett inställningsobjekt.

Behöver jag installera Axios för TypeScript separat?

Nej, TypeScript-typerna ingår i huvudpaketet axios. Inga ytterligare beroenden som @types/axios krävs — det räcker att importera axios från paketet med samma namn.

Hur avbryter jag en förfrågan i Axios?

Använd AbortController: skapa en AbortController-instans och skicka dess signal till förfrågans konfiguration. När controller.abort() anropas kommer förfrågan att avbrytas och Promise avvisas med ett motsvarande felmeddelande.

Fungerar Axios med React Native?

Ja, Axios är helt kompatibelt med React Native. Biblioteket använder den inbyggda XMLHttpRequest som är tillgänglig i React Native-miljön. Alla funktioner, inklusive interceptorer och avbrytande av förfrågningar, fungerar utan ytterligare konfiguration.

Hur lägger jag till auktoriseringsrubriker till alla förfrågningar?

Använd en begäran-interceptor för centraliserad tilläggning av Authorization-rubriken. Detta eliminerar behovet av att ange token i varje förfrågan separat och möjliggör enhetlig hantering av token-utgång.

Sammanfattning

  • Axios är en HTTP-klient för JavaScript och TypeScript med Promise API och stöd för webbläsare och Node.js
  • Interceptorer möjliggör centraliserad ändring av förfrågningar, felhantering och tillägg av auktorisering
  • Automatisk JSON-transformation förenklar arbetet med REST API utan manuell serialisering
  • Avbrytande av förfrågningar via AbortController förhindrar minnesläckor i mobil- och webbapplikationer
  • Instanskonfiguration gör det möjligt att ställa in grundparametrar för alla förfrågningar till API
  • TypeScript-stöd är inbyggt i paketet — ytterligare typer krävs inte
  • Axios förblir de facto-standarden för HTTP-klienter i JavaScript-ekosystemet

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också