Xây dựng base API cho dự án Nuxt

1. API API là một trong những thứ quan trọng nhất của dự án. Một dự án có cấu trúc API tốt sẽ tiết kiệm rất nhiều thời gian cho bạn khi làm việc và fix bug. Trong bài viết này mình sẽ viết 1 cấu trúc API đơn giản cho dự án Nuxt. 2.

1. API

API là một trong những thứ quan trọng nhất của dự án. Một dự án có cấu trúc API tốt sẽ tiết kiệm rất nhiều thời gian cho bạn khi làm việc và fix bug. Trong bài viết này mình sẽ viết 1 cấu trúc API đơn giản cho dự án Nuxt.

2. Cài đặt

Trước tiên bạn cần tạo 1 folder api cho dự án của bạn. Sau đó bạn tạo 1 file BaseApi.js trong folder vừa tạo. Mục đích của file này là tập hợp các hàm cơ bạn của API (get, post, put, patch, delete).

export default class BaseApi {
  constructor(axios) {
    this._axios = axios;
  }

  async get(url, params = {}) {
    try {
      const { data } = await this._axios.get(url, { params });
      return data;
    } catch (error) {
      throw error;
    }
  }

  async put(url, data) {
    try {
      const { data } = await this._axios.put(url, data);
      return data;
    } catch (error) {
      throw error;
    }
  }

  async patch(url, data) {
    try {
      const { data } = await this._axios.patch(url, data);
      return data;
    } catch (error) {
      throw error;
    }
  }

  async post(url, data) {
    try {
      const { data } = await this._axios.post(url, data);
      return data;
    } catch (error) {
      throw error;
    }
  }

  async delete(url, data) {
    try {
      const { data } = await this._axios.delete(url, { data });
      return data;
    } catch (error) {
      throw error;
    }
  }
}

Việc tạo file base như này sẽ giúp code của bạn ít bị lặp lại hơn và có thể dễ dàng thay đổi thư viện http khác nếu có yêu cầu

Tiếp theo bạn sẽ tạo các file api riêng biệt.

import BaseApi from './BaseApi';

export default class ExampleApi extends BaseApi {
  getExample(params) {
    return this.get('/example', params);
  }
};

Tạo 1 file api.js trong thư mục plugins và thêm nó vào nuxt.config.js. File này sẽ được thực thi trước khi instance root Vue được khởi tạo.

import ExampleApi from '~/api/ExampleApi';

let apiFactory;

export default function ({ $axios }) {
  apiFactory = {
    example: new ExampleApi($axios),
  };
}

export { apiFactory };
plugins: [
    '@/plugins/api',
  ],

Vậy là chúng ta đã tạo xong API cho dự án. Khi nào bạn cần call API thì chỉ cần import apiFactory vào và call. Đây là 1 ví dụ khi bạn call api trong action của vuex

import { apiFactory } from '~/plugins/api';

export default {
  async getData({ commit }, params) {
    try {
      const data = await apiFactory.example.getExample(params)
      commit('setTestData', data);
    } catch (error) {
      // handle error
    }
  }
};

Nguồn: viblo.asia

Bài viết liên quan

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 2

viết lại nội dung này ” Phát hiện các cuộc tấn công Cross Site Scripting (XSS)

AI Chatbot 2025: Xu Hướng Tất Yếu Cho Doanh Nghiệp Dẫn Đầu

Giới thiệu AI chatbots đã trải qua một hành trình đáng kể, từ những công cụ t

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 1

Tấn công web là gì? Ứng dụng web là các ứng dụng cung cấp dịch vụ cho người

SEO Mũ Trắng, Mũ Đen, Mũ Xám: Hiểu Biết và Lựa Chọn Phù Hợp

SEO Mũ Trắng, Mũ Đen, Mũ Xám: Hiểu Biết và Lựa Chọn Phù Hợp Trong kỷ nguyên s