Hướng dẫn axios trong nodejs
Sử dụng Restful API NodeJS hướng dẫn cách gọi API trong trang web. Có thể gọi bằng hàm fetch, xmlHttpRequest, hay dùng thư viện Jquery, Axios, AngularJS, VueJS … Show
Bài viết này hướng dẫn bạn dùng Fetch API (hàm fetch) và thư viện axios Chuẩn bị để sử dụng restful apiBạn phải có 1 bộ restful API cái đã rồi mới gọi được, ở bài hướng dẫn RESTful API trong NodeJS , bạn đã thực hiện với một bộ restful API cho product. Bây giờ bạn tạo nhanh một bộ khác (users) để phục vụ bài này nhé, cũng là dịp để ôn lại restful đã học ở bài trước. 1. Tạo database và table
2. Cài module express và express-generatorNếu máy của bạn đã cài rồi thì thôi bỏ qua, còn chưa thì mở command line rồi gõ lệnh npm install -g express , tiếp theo gõ lệnh npm -g install express-generator 3. Tạo project để thực tập– Vẫn trong command line rồi chạy lệnh: express –ejs SuDungAPI Bạn sẽ thấy folder SuDungAPI xuất hiện, các folder và file trong đó– Chuyển vào folder SuDungAPI mới tạo và chạy lệnh cài đặt các module cần thiết npm install npm install mysql 4. Tạo model kết nối db– Tạo folder models trong project var mysql = require('mysql'); var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'shop' }); db.connect(function(err) { if (err) throw err; console.log('Da ket noi database'); }); module.exports = db; //lệnh exports để xuất (public) ra cho bên ngoài module có thể dùng được db – Tạo file models/users.js code định nghĩa các hàm để tương tác vào mysql
5. Tạo controller– Mở file app.js, bạn sẽ thấy lệnh app.use(‘/users‘, usersRouter); . Đường route users đã được express tạo sẵn cho bạn dẫn vào router(controller) users. Cứ để vậy khỏi tạo nữa (nhưng nếu muốn có thể sửa hoặc tạo mới) – Mở file routes/users.js và code:
Test: Dùng postman để thực hiện test : xem danh sách user, xem chi tiết 1 user, thêm 1 user , cập nhật 1 user. Tất cả phải thành công nhé. Việc chuẩn bị đã xong. Giờ thì gọi nó trong trang web thế nào? Mời bạn xem tiếp để biết sử dụng Restful API NodeJS. Dùng hàm fetch() để gọi APITrong Javascript, hàm fetch(url,options) là một hàm dùng để gửi và nhận request đến tài nguyên ở xa. Bạn dùng hàm này để thực hiện gọi các API đã tạo Tạo request với method getDưới đây là cấu trúc cơ bản của hàm fetch để gọi 1 tài nguyên ở xa với method get. Nếu khi request mà có lỗi gì đó thì phần .catch sẽ chạy. Còn kết quả từ server sẽ truyền tới .then trong biến response, Bạn sử dụng biến response này để đánh giá kết quả trả về có ok không rồi chuyển nó thành các dạng dữ liệu cần thiết để xử lý ở các .then sau
Ví dụ 1: Gọi hàm API 1. Tạo route: Mở routes/index.js và code
2. Tạo views/listusers.ejs
3. Test: Chạy project (npm start) rồi mở trình duyệt gõ http://localhost:3000/danhsachuser , nếu thấy chữ Danh sách users là OK 4. Code gọi API trong views mới tạo (sau tag h1)
Xem lại thử trang http://localhost:3000/danhsachuser , sẽ thấy trong console Ví dụ 2: Có thể gọi API theo theo cách không gộp các hàm lại với nhau
Hàm fetch tạo request đến url, nhưng dữ liệu chưa có ngay. Đợi đến khi có hồi đáp kết quả sẽ chuyển đến hàm kiemtra để xử lý, việc xử lý bao gồm kiểm tra trạng thái ok từ server và chuyển body của response thành dạng json, rồi trả về cho hàm xulydulieu. Hàm xulydulieu sẽ đọc dữ liệu json để xử lý và hiển thị tùy nhu cầu. Trong quá trình hoạt động của fetch, nếu có lỗi thì điều khiển sẽ đến hàm trong phần catch để xử lý (xulyloi) Chú ý: nếu muốn bạn có thể thêm nhiều lệnh .then để xử lý tuần tự dữ liệu nếu muốn Đọc dữ liệu từ 1 object jsonObject dữ liệu json đổ về từ server là dữ liệu dạng text có cấu trúc , được trình duyệt hỗ trợ nên rất dễ đọc. Bạn hãy thử: Dùng trình duyệt xem API http://localhost:3000/users/1 sẽ thấy chi tiết user 1 ở dạng json. Request API rồi hiện ra rất dễ dàng 1. Tạo route: Mở routes/index.js và code
2. Tạo views/chitietuser.ejs var mysql = require('mysql'); var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'shop' }); db.connect(function(err) { if (err) throw err; console.log('Da ket noi database'); }); module.exports = db; //lệnh exports để xuất (public) ra cho bên ngoài module có thể dùng được db0 3. Test: Chạy project (npm start) rồi mở trình duyệt gõ http://localhost:3000/chitietuser , nếu thấy chữ Chi tiết user là OK 4. Code gọi API trong views mới tạo (sau tag h1) var mysql = require('mysql'); var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'shop' }); db.connect(function(err) { if (err) throw err; console.log('Da ket noi database'); }); module.exports = db; //lệnh exports để xuất (public) ra cho bên ngoài module có thể dùng được db1 Kết quả bạn sẽ thấy dữ liệu thân thiện , theo cách bạn muốn trình bày cho user xem. Đọc dãy các object jsonBạn hãy thử: Dùng trình duyệt xem API http://localhost:3000/users/ sẽ thấy array các user 1 ở dạng json. Request API rồi hiện ra cũng rất dễ dàng Mở views/listuser.ejs rồi code trong hàm xulydulieu để được như sau: var mysql = require('mysql'); var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'shop' }); db.connect(function(err) { if (err) throw err; console.log('Da ket noi database'); }); module.exports = db; //lệnh exports để xuất (public) ra cho bên ngoài module có thể dùng được db2 Thêm tag div sau tag h1 để chứa kết quả var mysql = require('mysql'); var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'shop' }); db.connect(function(err) { if (err) throw err; console.log('Da ket noi database'); }); module.exports = db; //lệnh exports để xuất (public) ra cho bên ngoài module có thể dùng được db3 Xem thử kết quả: http://localhost:3000/danhsachuser , sẽ thấy kết quả Gọi API với method POSTHàm fetch(url,options) giúp gửi request đến tài nguyên ở xa, trong đó options là các cấu hình chi tiết cho hàm. Cách sử dụng thể hiện qua ví dụ sau: – File routes/index.js var mysql = require('mysql'); var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'shop' }); db.connect(function(err) { if (err) throw err; console.log('Da ket noi database'); }); module.exports = db; //lệnh exports để xuất (public) ra cho bên ngoài module có thể dùng được db4 – Tạo file views/dangky.ejs var mysql = require('mysql'); var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'shop' }); db.connect(function(err) { if (err) throw err; console.log('Da ket noi database'); }); module.exports = db; //lệnh exports để xuất (public) ra cho bên ngoài module có thể dùng được db5 – Test: http://localhost:3000/dangky ==> nhập thông tin rồi nhắp Đăng ký sẽ lưu thành công vào database. Sử dụng thư viện AxiosAxios là một thư viện giúp bạn gửi http request đến các ứng dụng API. Axios được dùng cả ở trình duyệt hay Node.js. Sử dụng Restful API NodeJS sẽ dễ hơn với thư viện này. |