Giới thiệu về Axios – 1 HTTP Consumer dựa trên Promise của Javascript

Axios là 1 HTTP consumer được viết dựa trên Guarantees được dùng để tương trợ cho việc xây dựng những ứng dụng API từ đơn giản tới phức tạp và có thể được dùng cả trên trình thông qua hay sentayho.com.vn.

Việc tạo ra 1 HTTP request dùng để fetch hay lưu dữ liệu là 1 trong những nhiệm vụ thường thấy mà 1 ứng dụng Javascript phía consumer cần nên làm cho lúc muốn giao tiếp có phía server. Những thư viện bên thứ 3, đặc biệt là jQuery từ xưa tới nay vẫn là 1 trong những phương pháp phổ cập} để giúp cho những browser API tương tác phải chăng hơn, rõ ràng ổ lạc hơn và xóa đi những điểm khác biệt giữa những browser có nhau.

Lúc ngày càng có nhiều developer thích dùng những native DOM API được nâng cấp và cải thiện hơn jQuery, hay những thư viện lập trình front-end UI như React và sentayho.com.vn thì việc dùng cả 1 thư viện jQuery chỉ có 1 giá trị dùng đấy là tính năng của hàm $.ajax đã trở nên bất hợp lý hơn bao giờ hết.

Hãy cùng xem phương pháp để khởi đầu dùng Axios trong code của bạn, và xem 1 vài tính năng đã góp phần làm cho cho nó thêm phổ cập} đối có những lập trình viên Javascript.

Có lẽ bạn cũng đã để ý rằng, những browser tiên tiến trên thực tế} thường đi kèm và xây dựng sẵn những tính năng Fetch API new hơn, vậy tạo sao ta lại ko dùng nó luôn cho xong? Siêu nhiều những sự khác biệt giữa AxiosFetch làm cho siêu nhiều người vẫn lựa chọn Axios thay thế vì Fetch.

1 trong những đặc điểm lớn ta có thể thấy đấy là phương pháp mà 2 thư viện xử lý có những HTTP error code. Lúc dùng Fetch, ví dụ lúc server trả về những mã lỗi 4xx hay 5xx, thì hàm catch() của bạn sẽ ko được gọi tới và người lập trình viên sẽ có nhiệm vụ nên tự động đánh giá trạng thái của mã trả về để xác định xem liệu request đấy có thành công hay ko. Trong lúc đấy, Axios sẽ reject đa số những promise của request ví dụ 1 trong những mã lỗi trên được trả về.

1 điểm khác biệt nho bé khác, điều mà ko ít những lập trình viên new trong việc xây dựng API gặp nên đấy là việc Fetch ko tự động động gủi trả cookies về cho server lúc tạo 1 request. Ta sẽ cần nên truyền 1 phương pháp quản lý những choice để cho cookies có thể được embrace. Còn có Axios thì bạn ko hề nên lo về vấn đề này.

Xem Thêm  Phim chiếu rạp dịp 30/4 – 1/5 có gì hấp dẫn? Bạn đã biết – Cool Mate

Sự khác biệt có thể được coi là vô cùng đáng chú ý đối có siêu nhiều lập trình viên đấy là khả năng cập nhật tiến độ của những lần uploads/downloads. Vì Axios được xây dựng dựa trên những XHR API cũ hơn, bạn có thể khai báo những hàm callback cho onUploadProgress và onDownloadProgress để hiện thị phần trăm thành công tại giao diện cho app của bạn. Và cho tới hiện tại thì Fetch vẫn chưa tương trợ gì cho việc này.

Cuối cùng, Axios có thể được xử dụng trên cả browser và sentayho.com.vn và chính điều này đã tạo thời cơ cho việc chia sẻ code Javascript giữa những trình thông qua và phần back-end hay việc thực hành render cho ứng dụng front-end của bạn trên phía server.

Có thể bạn đã biết, 1 trong những phương pháp thường thấy để cài đặt Axios đấy là thông qua trình quản lý những npm bundle.

npm i axios

và tiếp tục embrace nó vào trong code của bạn trên những nơi bạn cần:

// ES2015 model import import axios from ‘axios’; // sentayho.com.vn model require const axios = require(‘axios’);

Hoặc ví dụ bạn ko dùng 1 loại module bundler nào (thí dụ: webpack), thì bạn vẫn luôn có thể kéo thư viện này từ 1 CDN như theo phương pháp cổ điển:

<script src=”https://unpkg.com/axios/dist/axios.min.js”></script>

Tương trợ trình thông qua

Axios có thể hoạt động trong tất những trình thông qua internet tiên tiến, và Web Explorer phiên bản 8+

Giống như có hàm $.ajax của jQuery, bạn có thể tạo bất kỳ 1 request HTTP nào bằng phương pháp truyền vào những object choice cho Axios:

axios({ technique: ‘put up’, url: ‘/login’, information: { consumer: ‘take a look at’, lastName: ‘test1’ } });

Tại đây chúng ta phân phối cho Axios biết rằng phương thức HTTP nào mà chúng ta muốn dùng (Thí dụ: GET/POST/DELETE…) và URL nào được dùng để gửi request lên.

Đồng thời chúng ta cũng phân phối 1 số dữ liệu để có thể gửi kèm có request dưới dạng những object Javascript đơn giản gồm những cặp key/worth. Mặc định, Axios sẽ serialize những object này thành JSON và gắn chúng trên phần physique của request.

Những choice cho Request

Có siêu nhiều những choice thêm mà bạn có thể truyền vào lúc tạo 1 request, nhưng dưới đây là những choice phổ cập} nhất:

  • baseURL: ví dụ bạn chỉ định 1 base URL, nó sẽ được đính vào trước bất cứ 1 URL tương đối nào mà bạn dùng.
  • headers: 1 object gồm những cặp key/worth có thể gửi trong header của request.
  • params: 1 object gồm những cặp key/worth mà sẽ được serialize và đính vào URL dưới dạng 1 question string.
  • responseType: ví dụ bạn mong chờ 1 format trả về khác bên cạnh JSON, thì bạn có thể set thuộc tính này thành arraybuffer, blob, doc, textual content hay stream
  • auth: truyền vào 1 object gồm 2 trường username và password được dùng để phân phối quyền truy cập cho những request bắc buộc HTTP Fundamental auth.
Xem Thêm  Chèn brand vào ảnh hàng loạt, thêm watermark trong ảnh

Những hàm tiện lợi

Giống như jQuery, Axios cũng có những hàm ngắn để thực hành những kiểu request khác nhau.

Những hàm get, delete, head và choices đều nhận vào 2 tham số là URL và 1 object choice dùng để config request.

sentayho.com.vn(‘/merchandise/5’);

Những hàm put up, put và patch nhận 1 object dữ liệu vào thành tham số thứ 2 của chúng và object choice dùng để config là tham số thứ 3.

sentayho.com.vn( ‘/merchandise’, { identify: ‘Waffle Iron’, value: 21.50 }, { choices } );

1 lúc bạn đã tạo ra 1 request, Axios trả về 1 guarantees mà sẽ resolve ngay cả lúc kết quả trả về là 1 object response hay 1 object error.

sentayho.com.vn(‘/product/9’) .then(response => sentayho.com.vn(response)) .catch(error => sentayho.com.vn(error));

Response Object

Lúc 1 request được thực hành thành công, thì hàm then() của bạn sẽ nhận được 1 response object có những thuộc tính như sau:

  • information: Payload được trả về từ server. Mặc định, Axios mong chờ JSON và sẽ parse nó phát triển thành 1 Javascript Object cho bạn.
  • standing: mã HTTP được trả về từ server.
  • statusText: message của HTTP standing được trả về bởi server.
  • headers: đa số những header được gửi về từ server.
  • config: thiết lập ban đầu của request.
  • request: 1 object XMLHttpRequest thực lúc request được thực hành trên trình thông qua.

Error Object

Trường hợp có bất kỳ vấn đề gì xảy ra có request, promise sẽ bị reject có 1 error object chứa những thuộc tính sau đây.

  • message: message của error trên dạng textual content.
  • response: response object được trả về.
  • config: thiết lập ban đầu của request.
  • request: 1 object XMLHttpRequest thực lúc request được thực hành trên trình thông qua.

Transforms

Axios cho phép bạn phân phối những operate để biến đổi dữ liệu tới và đi, dưới dạng 2 config choice mà bạn có thể set lúc thực hành 1 request: transformRequest và transformResponse. Cả 2 thuộc tính đều là những mảng, giúp bạn có thể tạo 1 luồng những operate mà dữ liệu có thể đi qua.

Bất kỳ operate nào được truyền vào transformRequest đều được ứng dụng vào cho những request PUT, POST và PATCH. Chúng nhận vào dữ liệu cần request và object header dưới dạng tham số và nên trả về 1 object đã được chỉnh sửa thay thế đổi.

const choices = { transformRequest: [ (data, headers) => { // do something with data return data; } ] }

Những operate cũng có thể được thêm vào transformResponse tương tự động như vậy, nhưng chỉ được gọi lúc có response information từ server, và trước lúc response được truyền qua bất cứ hàm then() nào.

Xem Thêm  9 phần mềm chuyển văn bản thành giọng nói phải chăng nhất (TTS)

Vậy ta có thể dùng remodel vào phần đích gì? 1 trường hợp dùng đấy là lúc API mong chờ dữ liệu trả về dưới format cụ thể khác như XML hay nhắc cả CSV. Bạn có thể arrange 1 vài hàm remodel để convert dữ liệu gửi đi và trả về. Mặc định, hàm transformRequest và transformResponse biến đổi dữ liệu thành JSON.

Interceptors

Trong lúc remodel cho phép bạn điều chỉnh dữ liệu gửi đi và trả về, Axios cũng cho phép bạn thêm những operate gọi là interceptors. Giống remodel, những operate này có thể được đính vào để gọi tới lúc 1 request được tạo ra, hay 1 response được trả về.

// Add a request interceptor sentayho.com.vn((config) => { // Do one thing earlier than request is distributed return config; }, (error) => { // Do one thing with request error return sentayho.com.vnct(error); }); // Add a response interceptor sentayho.com.vn((response) => { // Do one thing with response information return response; }, (error) => { // Do one thing with response error return sentayho.com.vnct(error); });

Như bạn có thể thấy trên thí dụ trên, interceptor có những điểm khác biệt quan yếu so có transforms. Thay đổi vì chỉ nhận dữ liệu hay headers, interceptor nhận vào toàn bộ config của request hay response object.

Lúc tạo 1 interceptor, bạn cũng có thể chọn phân phối 1 hàm xử lý error cho phép bạn bắt và xử lý lỗi hợp lý. Request interceptors có thể được dùng để thực hành những điều như: lấy token từ localStorage và gửi kèm những request. Response interceptor có thể được dùng để bắt lỗi 401 và redirect tới trang login trong việc xác thực.

Là 1 thư viện phổ cập}, Axios được hưởng lợi siêu nhiều từ 1 hệ sinh thái những thư viện bên thứ 3 thừa hưởng từ tính năng của Axios.

  • axios-mock-adaptor: cho phép bạn dẽ dàng mock request để thực hành việc đánh giá code.
  • axios-cache-plugin: 1 wrapper được dùng để lựa chọn lưu Cache những GET request.
  • redux-axios-middleware: ví dụ bạn dùng Redux, middleware này phân phối 1 phương pháp gọn gàng để dispatch 1 Ajax request có những actions. 1 danh sách những add-ons và extensions khác có sẵn trên Github.

Có siêu nhiều nguyên nhân để ta chọn dùng Axios. Thư viện này có 1 API rõ ràng, có những technique hữu dụng quen thuộc có bất kì ai đã từng dùng jQuery trước đây. Sự phổ cập} của nó và việc có sẵn những thư viện bên thứ 3 làm cho Axios phát triển thành lựa chọn chắc hẳn chắn cho ứng dụng của bạn cho dù là front-end hay back-end hay cả 2.

Tham khảo

  • https://www.sitepoint.com/axios-beginner-guide/