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

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ