Bảo mật api nodejs
Hướng dẫn RESTful API trong NodeJS 20/01/2021 Show
Hướng dẫn RESTful API trong NodeJS chỉ bạn cách triển khai web service nhằm public các tài nguyên của mình phục vụ các request từ xa. RESTful API trong NodeJSREST là gì? REST – viết đầy đủ là REpresentational State Transfer – là một chuẩn trong lập trình, nó định nghĩa các quy tắc để tạo ra các web service nhằm cung cấp các chức năng truy xuất, thêm mới, cập nhật tài nguyên từ xa qua http. Restful API diễn dịch lại dữ liệu giữa các hệ thống ứng dụng và máy tính, tạo nên khả năng truyền tải dữ liệu đơn giản mà hiệu quả, phục vụ trao đổi dữ liệu giữa các nền tảng khác nhau và xa nhau. Với Restful, bạn sẽ tạo nên khả năng truy cập tài nguyên cho client thông qua các URI. Dữ liệu trả về sẽ trong dạng json, xml, html nhưng chủ yếu là json. Restful sử dụng HTTP như cỗ xe chuyên chở dữ liệu giữa server và client qua các method GET, HEAD, POST, PUT, PATCH, DELETE… Các dạng dữ liệu trả về trong Restful apiKhi dùng restful, các dạng dữ liệu sau thường dùng để trả về cho client. Trong đó, thường dùng nhất là dạng json. Các quy định http method trong restfulHTTP methodMô tảGETDùng để lấy một tài nguyên hoặc danh sách các tài nguyên từ server (đã representation lại theo dạng json, xml…)POSTGửi đến server tài nguyên để xử lý (thường dùng cho thêm mới record)PUTẤn định trạng thái mới cho tài nguyên trên server (thường dùng cho update record)DELETEXóa tài nguyên chỉ định trên serverNhững chức năng này thường gọi tắt là CRUD (C =Create, R=Read, U=Update, D=Delete) Các status code httpKhi request đến một tài nguyên, các status code sẽ trả về client :
Sử dụng postman để test restful apiPostman là một chương trình giúp bạn đóng vai 1 client để tạo restquest đến server, postman như một trình duyệt dành cho web dev. Nó hỗ trợ đầy đủ các method http như post, get, put, delete….và các tham số trong http request Địa chỉ để download : https://www.postman.com/downloads/ Cài đặt postman không có gì đặt biệt vì rất dễ , bạn chỉ việc chạy chương trình, nhắp nút next next là xong Sau đây là phần hướng dẫn RESTful API trong NodeJS, bạn cần chuẩn bị database, tạo folder project trước khi thực hiện nhé. Thực hiện restful api trong nodejsChuẩn bị databaseTạo table tên sach như sau: Nhập dữ liệu 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ì
Tạo project để thực tập
express --view=ejs RestfulTest Bạn sẽ thấy folder RestfulTest xuất hiện các folder và file trong đó 2. Chuyển vào folder RestfulTest mới tạo và chạy các lệnh cài đặt module cần thiết npm install npm install mysql Tạo model kết nối db1. Tạo folder models trong project 2. Tạo file file models/database.js var mysql = require('mysql'); var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'labnodejs' }); db.connect(() => console.log('Da ket noi database !')); module.exports = db; Tạo route1. Mở file app.js và định nghĩa route sach dẫn vào controller routes/sach var sachRouter = require('./routes/sach');
app.use('/sach', sachRouter); 2. Tạo file routes/sach.js và code var express = require('express'); var router = express.Router(); var db = require('./../models/database'); router.get('/', function(req, res, next) { //chức năng trả về danh sách các record //phương thức request: get //lấy ra các record trong table //trả về danh sách sách dạng json }); router.post('/', function(req, res, next) { //chức năng thêm mới record vào table //phương thức request: post //tiếp nhận dữ liệu gửi trong body request //thực hiện chèn record mới vào table //trả về thông báo đã chèn dạng json }); router.get('/:id', function(req, res, next) { //chức năng trả về chi tiết 1 record //phương thức request: get //tiếp nhận id của reord trong url //lấy ra record theo id từ table //trả về chi tiết record dạng json }); router.put('/:id', function(req, res, next) { //chức năng cập nhật record trong table //phương thức request: put //tiếp nhận dữ liệu gửi trong body request //thực hiện cập nhật record vào table //trả về thông báo json đã cập nhật }); router.delete('/:id', function(req, res) { //chức năng xóa 1 record trong table //phương thức request: delete //tiếp nhận id trong url //thực hiện xóa record //trả về thông báo json đã xóa }); module.exports = router; Thực hiện chức năng danh sách record1. Trong routes/sach.js, code lại chức năng trả về danh sách các record để được như sau router.get('/', function(req, res, next) { let sql = `SELECT id, tenSach, moTa, urlHinh FROM sach`; db.query(sql, function(err, data) { res.json(data); }); }); 2. Test: Mở Postman để test Trình Postman download từ https://www.postman.com/downloads/ , giúp bạn tạo các loại request khác nhau (get, post, put, delete…) đến server. Nếu bạn chưa cài thì down rồi cài vào máy nhé. Mở chương trình postman, chọn method GET và nhập url rồi nhắp Send như hình Thực hiện lấy chi tiết record1. Trong routes/sach.js, code lại chức năng trả về chi tiết 1 record để được như sau router.get('/:id', function(req, res, next) { let id=req.params.id; let sql = 'SELECT * FROM sach WHERE id = ?' db.query(sql, id, (err, d) => { res.json(d[0]); }); }); 2. Test: Mở Postman để test Trong tool postman, chọn method GET và nhập url rồi nhắp Send như hình Thực hiện chức năng thêm record1. Trong routes/sach.js, code lại chức năng thêm mới record vào table để được như sau: router.post('/', function(req, res, next) { let data = req.body; let sql = 'INSERT INTO sach SET ?'; db.query(sql, data, (err, d) => { if (err) throw err; res.json({thongbao:"Đã chèn xong sách"}); }); }); 2. Test: Mở Postman để test Trong tool postman, chọn method POST và nhập url rồi nhắp Send như hình Thực hiện chức năng cập nhật record1. Trong routes/sach.js, code lại chức năng cập nhật record trong table để được như sau: router.put('/:id', function(req, res, next) { let data = req.body; let id = req.params.id; let sql = 'UPDATE sach SET ? WHERE id = ?'; db.query(sql, [data, id], (err, d) => { if (err) throw err; res.json({thongbao: 'Đã cập nhật sách'}); }); }); 2. Test: Mở Postman để test Trong tool postman, chọn method PUT và nhập url rồi nhắp Send như hình Thực hiện chức năng xóa record1. Trong routes/sach.js, code lại chức năng xóa record trong table để được như sau: router.delete('/:id', function(req, res) { let id = req.params.id; let sql = 'DELETE FROM sach WHERE id = ?' db.query(sql, id , (err, d) => { if (err) throw err; res.json({thongbao: 'Đã xóa thành công'}); }); }); 2. Test: Mở Postman để test Trong tool postman, chọn method DELETE và nhập url rồi nhắp Send như hình Trên đây là phần hướng dẫn RESTful API trong NodeJS, bao gồm các khái niệm, cách tạo api, cách test. Các vấn đề liên quan vẫn còn, đó là authentication trong restful, validation, kết hợp với phần front end… sẽ được trình bày tiếp sau. Bài tập: mời bạn thực hiện tạo bộ các hàm restful api tương tự như trình bày ở trên nhưng với table loai. |