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

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,