Nội dung bài viết
Video học lập trình mỗi ngày
Global fetch API hiện đã có phiên bản mới nhất của JavaScript runtime Node.js. Node.js 18 bao gồm bản cập nhật cho công cụ JavaScript V8, với tính năng fetch được bật theo mặc định và module test.
Node.js 18 phát hành global fetch API
Với global fetch API và module test thì có lẽ anh em dev chúng ta rất vui mừng hay còn nói kiểu khác là sướng không thể tả. Vậy nó sướng thế nào, anh em theo tôi thử một ví dụ code sau về fetch api
.
Nói về fetch
thì anh em hầu như ai cũng biết browser hỗ trợ top await nên việc sử dụng fetch với async/await là đã không hề bàn cãi. Ví dụ sau mô tả quá trình thực hiện trong console browser.
const {login, id} = await (await fetch('https://api.github.com/users/anonystick')).json()
console.log({login, id})
//Output
{login: 'anonystick', id: 48472372}
Xem video Senior sử dụng async await fetch api thực sự pro nhu thế nào? nếu bạn không hiểu vì sao await
lại thêm await
.
Vậy giả sử nếu như bạn muốn làm điều đó trong node.js thì sao. Từ phiên bản node.js v17 trở xuống thì bạn phải sử dụng những package như node-fetch
hay axios
để làm được điều tương tự như trên. Đây là ví dụ về cách lấy {login, id}
khi sử dụng node-fetch
trong version v17.
import fetch from 'node-fetch';
async function getDate() {
const response = await fetch('https://api.github.com/users/anonystick');
const {login, id} = await response.json()
console.log({login, id})
}
getDate();
//Output
{login: 'anonystick', id: 48472372}
Nhưng với Node.js 18 thì tính năng fetch
đã được hỗ trợ vào function global. Cho nên anh em dev không cần instal thêm một package nào khác mà nói cách khác là sử dụng như cách mà chúng ta chạy trên console browser luôn. Code ví dụ sau thể hiện điều đó.
async function getDate() {
const response = await fetch('https://api.github.com/users/anonystick');
if(response.ok){
const {login, id} = await response.json()
console.log({login,id});
}
}
getDate()
//Output
{login: 'anonystick', id: 48472372}
Có thể nói đó là lý do vì sao tôi gắn bó với node.js từ 2015 đến nay, bởi vì khó tìm một cái thứ hai. I love node.js