Grokking Newsletter

Share this post

#160 - Tại sao Javascript developer thích sử dụng axios hơn fetch?

newsletter.grokking.org

#160 - Tại sao Javascript developer thích sử dụng axios hơn fetch?

Grokking Vietnam
Feb 28, 2021
Share this post

#160 - Tại sao Javascript developer thích sử dụng axios hơn fetch?

newsletter.grokking.org

Grooking Newsletter đã chính thức trở lại sau 2 tuần nghỉ Tết cổ truyền. Ban biên tập hy vọng sau khoản thời gian nghỉ ngơi thư giãn cùng người thân và bạn bè, quý bạn đọc có thêm nhiều năng lượng để thực hiện các dự định trong năm mới và tiếp tục cùng đồng hành với Grokking Newsletter trong thời gian tới.

Nếu bạn đọc thấy hay, mong các bạn ủng hộ Grokking bằng cách forward email cho những bạn bè làm software engineering!


Những bài viết hay

Tại sao Javascript developer thích sử dụng axios hơn fetch? — betterprogramming.pub

Fetch là một "built in" được tích hợp sẵn trong Javascript hỗ trợ thao tác gọi API từ web client (chi tiết về Fetch API bạn có thể xem thêm tại đây). Bởi vì là một built in, do đó bạn không cần phải cài đặt Fetch, tuy nhiên hầu hết các Javascript developer không thích sử dụng fetch mà thường tìm một giải thay thế tiện lợi hơn. Trong các giải pháp thay thế, axios là phương án phổ biến nhất. Vậy tại sao developer thích dùng axios hơn fetch?

JSON

Fetch trả về một response object, developer phải dùng thêm một method khác (phổ biến là response.json()) để đọc dữ liệu của response object. Một điểm trừ nữa cho fetch là nó không được tích hợp sẵn trong NodeJS.

Axios mặc định trả về json object, do đó lập trình viên có thể thao tác một cách dễ dàng.

Xử lý lỗi (Error Handling)

Với Fetch bạn luôn phải kiểm tra status của response (response.ok) để biết API trả về thành công hay lỗi.

Ngược lại, bạn có thể xử lý error khá dễ dàng với axios. Trong trường hợp API trả về HttpStatus khác 2xx, Promise sẽ reject và trả về lỗi thay vì resolve như fetch. Do đó developer có thể catch lỗi và xử lý một cách dễ dàng.

Kiểm tra tiến độ

Bạn không thể giám sát tiến độ upload trong fetch, tuy nhiên bạn có thể kiểm tra được tiến độ download bằng cách sử dụng ReadableStream object (code tương đối phức tạp)

Axios có thể giám sát được cả upload lẫn download, code tương đối đơn giản

Http Interceptor

Mặc định, Fetch không cung cấp HTTP Interceptor, developer phải override fetch() nếu muốn có HTTP Interceptor.

Http Interceptor là một trong những tính năng nổi bật của axios, bạn có thể dùng axios interceptor cho các mục đích khác nhau nhưng error handling, thiết lập các custom header như Authorization, v.v.

Timeout

Để thiết lập timeout cho fetch, bạn phải dùng tới AbortController tương đối phức tạp, với axios điều này hết sức đơn giản chỉ với một dòng config

timeout: 5000

Sự tương thích

Fetch chỉ hỗ trợ Chrome 42+, Safari 10.1+, Firefox 39+, and Edge 14+, chi tiết bạn có thể xem tại Can I Use - https://caniuse.com/?search=Fetch

Axios hỗ trợ tương đối rộng rãi, ngay cả IE11. Chi tiết bạn có thể tra cứu thêm trong Axios Documentation - Ihttps://github.com/axios/axios#browser-support

Những lỗi phổ biến nhất khi phát triển các ETL pipelines

Các dự án về Data Warehouse từ lâu đã trở thành một phần của cơ sở hạ tầng CNTT của hầu hết các công ty lớn. Các quy trình ETL (Extraction-Transformation-Loading) là một phần của các dự án này, nhưng các nhà phát triển đôi khi cũng mắc những lỗi tương tự khi thiết kế và duy trì các quy trình này. Trong bài viết, tác giả giới thiệu một số sai lầm phổ biến dễ mắc phải trong các giai đoạn phát triển ETL.

Trong bài viết, tác giả muốn thu hẹp phạm vi phân tích trọng tâm vào các vấn đề:

  • Data warehouse bao gồm traditional SQL DWH (Oracle Database, MS SQL Server, etc.)

  • Khái niệm về single version of the truth and historical truth khi mô hình hoá Data Warehouse

  • ETL-process đề cập đến quá trình tải dữ liệu từ một hoặc nhiều hệ thống nguồn vào Data Warehouse .

  • Data Warehouse thường được tạo ra từ một thời gian nhất định và luôn có một số nhóm phát triển đang độc lập làm việc trên đó.

Từ đây, tác giả đề cập một cách chi tiết về các sai sót dễ gặp phải và cách khắc phục trong quá trình phát triển ETL:

  • Sử dụng SYSDATE hoặc các hàm tương đương cho business logic

  • Data Profiling không được thực hiện trước khi quá trình phát triển bắt đầu

  • Sử dụng "static" script từ hệ thống nguồn

  • Phát triển trên một lượng dữ liệu nhỏ

  • Sử dụng sai giữa techical và business date

  • "Mechanical" implementation

The Node.js Architecture! — medium.datadriveninvestor.com

Hầu hết chúng ta đều biết, developer sử dụng Javascript để phát triển ứng dụng trên nền tảng NodeJS, tuy nhiên NodeJS khổng chỉ được xây dựng bằng Javascript mà cả C++ nữa và sử dụng nhiều thư viện khác nhau, trong đó có 2 thư viện phụ phuộc quan trọng nhất là V8 và LIBUV.

V8 là một javascript engine được phát triển bởi Google. Nó phụ trách việc chuyển javascript code thành mã máy để máy tính có thể hiểu và thực thi.

LIBUV cung cấp cho NodeJS quyền truy cập vào hệ điều hành máy tính, mạng, hệ thống file, v.v. LIBUV là một thư viện mã nguồn mở được viết bằng C++. Ngoài việc tập trung xử lý truy xuất I/O bất đồng bộ (asynchronous I/O), LIBUV còn phát triển hai tính năng rất quan trọng khác là event loop và thread pool.

Ngoài V8 và LIBUV, NodeJS còn được tạo ra từ các thư viện khác như HTTP parser, C-ARES (DNS queries), OpenSSL và Zlib.

Góc Distributed System

Disaster Recovery, cách tiếp cận Always On!

Làm việc trong các hệ thống phân tán, chắc chắn bạn sẽ được nghe hoặc tiếp xúc với bài toán Disaster Recovery. Sự cố là điều không thể tránh khỏi và các kỹ sư luôn luôn chuẩn bị các phương án để phòng ngừa Disaster xảy ra cũng như cách khắc phục khi nó xảy ra. Các phương án phổ biến như thiết lập một hệ thống hoàn toàn tương tự hệ thống chính, hoạt động ở chế độ hot, warm hoặc cold standby (là chế độ chờ và sẵn sàng ngay lập tức thay thế hệ thống chính khi có sự cố), thường được gọi là phương pháp FailOver. Góc Distributed System tuần này chia sẻ một cách tiếp cận mới, được sử dụng ngày càng nhiều trong các hệ thống phức tạp và quan trọng, được Google lần đầu tiên công bố áp dụng trong hệ thống Google Ads của họ, có tên gọi là Natively Multihomed Architecture, hay còn được gọi là Kiến trúc Always On. Kiến trúc này có lợi thế so với các cách tiếp cận cũ là sử dụng ít tài nguyên hơn mà đem lại mức độ sẵn sàng (high availability) và tính nhất quán (consistency) cao hơn.Ý tưởng chính của kiến trúc này là xây dựng các hệ thống giống hệt hệ thống gốc (nhiều hơn 1), tất cả cùng hoạt động (Always On) và tải được phân phối nhịp nhàng giữa các hệ thống. Khi một hệ thống có dấu hiệu xử lý chậm, workload sẽ được tự động phân bổ nhiều hơn tới những hệ thống còn lại.Để hiểu thêm về kiến trúc này, mời bạn đọc những bài viết dưới đây:

http://highscalability.squarespace.com/blog/2016/8/23/the-always-on-architecture-moving-beyond-legacy-disaster-rec.html

Bài viết gốc của Google Ads về kiến trúc Multihomed: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf

Một số hệ thống khác của Google cũng được build với kiến trúc này như là Spanner, Photon hay Mesa.

Code & Tools

  • 5 Nuget Packages hữu ích cho DotNet 5 & DotNet Core

  • Cross-platform HTTP benchmarking tool

  • 10 Tools giúp cuộc sống web developer trở nên dễ dàng hơn

This Week Sponsors

POPS is a creative, innovative & hyper-growth working environment where storytelling meets technology.

POPS is the leading digital entertainment company in Southeast Asia. With over 12 years in entertainment, we provide thousands of exclusive, high-quality, carefully curated local and international contents and bring a unique entertainment experience through POPS Original series, concerts, movies, comics, esports and more.

We are on a journey to find talents who are passionate about technology and love to develop POPS APP the digital entertainment product with the latest technologies such as: OTT, Video On Demand, Microservices, etc. to give end users in the region great experiences with an all-inclusive digital entertainment platform. 

Góc Tuyển Dụng

  • Software Architect

  • Technical Lead

Visit https://popsww.com/en/careers for current job openings.

Quotes

Every great developer you know got there by solving problems they were unqualified to solve until they actually did it.

- Patrick McKenzie

Share this post

#160 - Tại sao Javascript developer thích sử dụng axios hơn fetch?

newsletter.grokking.org
Comments
TopNewCommunity

No posts

Ready for more?

© 2023 Grokking Vietnam
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing