Bài 22-NodeJS RESTful Web Services – Phần 1

Ta đã biết cách lập trình NodeJS và cấu hình IISNode Server. Tiếp sau đây Tui sẽ hướng dẫn các bạn chi tiết cách lập trình RESTful WebService bằng NodeJS như thế nào.

Chuỗi bài học này sẽ dùng MongoDB làm Cơ sở dữ liệu để demo, dùng PostMan, một công cụ Rest Client vô cùng tuyệt vời để Test các coding liên quan tới RESTful. Đặc biệt ta sẽ Debug trực tiếp từ PostMan – qua Visual Studio để lần vết lỗi (Lập trình viên phải biết Debug, vì cuộc đời chúng ta sinh ra để tạo ra lỗi và để sửa lỗi ..ahahaha)

Ở bài học đầu tiên trong chuỗi RESTful Web Service này Tui sẽ nói sơ qua về lý thuyết kiến trúc REST, REST là gì (nói sơ thôi, chứ các Thím vào Google enter 1 cái nó ra 1 nùi), đồng thời làm 1 ví dụ nho nhỏ là HTTPGET để lấy toàn bộ dữ liệu trong 1 file JSON như thế nào. Sau khi nắm được kiến trúc của nó rồi thì qua các bài sau ta sẽ coding đầy đủ về RESTful trên CSDL MongoDB.

Lưu ý: REST, RESTful là một khái niệm chung, nó độc lập với bất kỳ ngôn ngữ lập trình nào (giống như lập trình Hướng đối tượng – OOP nó là 1 khái niệm). Khi hiểu bản chất của nó rồi thì Ngôn ngữ nào cũng không nghĩa địa gì với các bạn cả.

Nếu các bạn muốn tạo RESTful bằng .net thì có thể đọc các bài sau: Bài 68-phần 1 , Bài 69-phần 2Bài 70- phần 3, Bài 71- phần 4, Ngoài ra Tui cũng có quay khóa học thành Video các bạn có thể đăng ký học tại đây: https://communityuni.com/Home/WebService

REST là gì ?

REST lần đầu tiên được giới thiệu bởi Roy Fielding năm 2000. REST là viết tắt của Representational State Tranfer. REST là một chuẩn web dựa vào các kiến trúc cơ bản sử dụng giao thức HTTP. Nó xử lí tài nguyên, nơi mà mỗi thành phần là một tài nguyên và nguồn tài nguyên này có thể được truy cập qua các giao diện chung bởi sử dụng các phương thức HTTP chuẩn (POST, GET, PUT, DELETE).->Chắc chả hiểu gì đâu, đọc nghe lùng bùng lỗ tai, lý thuyết nó vậy thì cứ đọc đi cho nó vui. Ráng đua theo chuỗi bài hướng dẫn sẽ hiểu hết á các Thím.

Lưu ý mỗi nguồn tài nguyên được xác định bởi một URI (Ví dụ như: Muốn lấy toàn bộ Sản phẩm thì vào http://localhost:1337/products, Muốn lấy chi tiết Sản phẩm có mã là P35 thì vào http://localhost:1337/products/P35). REST sử dụng các cách biểu diễn khác nhau để biểu diễn các nguồn tài nguyên như text, JSON, XML nhưng phổ biến nhất vẫn là JSON.

Các Phương thức HTTP được sử dụng trong REST nhiều nhất là (dĩ nhiên còn 1 nùi khác mà Tui không đề cập):

GET – Được sử dụng để đọc các nguồn tài nguyên.

POST – Được sử dụng để tạo mới nguồn tài nguyên.

PUT – Được sử đụng để chỉnh sửa nguồn tài nguyên.

DELETE – Được sử dụng để xóa các nguồn tài nguyên.

Lưu ý: Dĩ nhiên lâu lâu vẫn có những Anh Hùng Xạ Điêu sử dụng 4 Method ở trên mà không cần phải theo quy luật. Tức là họ tỏ vẻ nguy hiểm ngáo đá như thế này: GET dùng để thêm mới, POST dùng để xóa, PUT dùng để tạo mới… vẫn được hết nha các Thím (nhưng hãy làm đúng chức năng nhiệm vụ của nó đã, khi nào trùm rồi thì tỏ vẻ nguy hiểm sau, chả ai trả tiền cho độ nguy hiểm vãi đạn này).

RESTful Web Service?

Một web service là một tập hợp các giao thức và chuẩn được sử dụng cho mục đích tương tác dữ liệu giữa các ứng dụng bất kỳ và hệ thống. Các ứng dụng phần mềm được viết bởi các ngôn ngữ khác nhau và chạy bởi các nền tảng khác nhau có thể sử dụng web service để trao đổi dữ liệu qua mạng máy tính như internet theo các cách tương tự như trao đổi trên một máy tính (Là viết 1 lần mà sài mọi nơi đó các Thím, Ví dụ viết bên Linux cấu hình service chạy xong thì bất kỳ chỗ nào cũng tương tác được tới nó mà không cần coding lại phần Service).

Web service dựa trên các kiến trúc REST được biết như RESTful webservice . Những webservice này sử dụng các phương thức HTTP để triển khai các định nghĩa kiến trúc REST. Một RESTful web service thường được định nghĩa một URI (kiểu như đường dẫn), Uniform Resource Identifier như một service.

OK, bây giờ Ta tạo 1 Project nho nhỏ để tạo 1 Web RESTful bằng NodeJS nha, nó đơn giản chỉ là hiển thị danh sách dữ liệu trong file Json thôi.

Ta đặt tên Project này là: NodejsRestfulSampleJSon:

Và ta sẽ dùng thư viện Express nên ta đưa nào vào Project này như sau (bấm chuột phải vào npm/ chọn Install New npm Package):

Sau đó tìm : Express rồi chọn Express như hình dưới

Bấm Install Package để cài đặt:

Thấy nó hiển thị express-generator như trên là thành công.

Tiếp theo ta tạo 1 file dữ liệu bằng json như sau (bấm chuột phải chọn new item rồi tìm tới Json, hoặc dán cái file Tui cung cấp ở dưới vào đây là xong):

product.json:

[code language="json"]

[
{
"Ma": "course1",
"Ten": "Lập trình Java cơ bản",
"Link": "https://communityuni.com/Home/JavaToanTap"
},
{
"Ma": "course2",
"Ten": "Lập trình LINQ",
"Link": "https://communityuni.com/Home/LINQ"
},
{
"Ma": "course3",
"Ten": "Lập trình Webservice RESTful",
"Link": "https://communityuni.com/Home/WebService"
},
{
"Ma": "course4",
"Ten": "Lập trình Android",
"Link": "https://communityuni.com/Home/Android"
}
]

[/code]

Tiếp tục sửa coding của server.js thành:

[code language="javascript"]

var express = require('express');
var app = express();
var fs = require("fs");
var port = process.env.PORT;

app.get('/products', function (req, res) {
fs.readFile(__dirname + "/" + "product.json", 'utf8', function (err, data) {
console.log(data);
res.end(data);
});
})

var server = app.listen(port, function () {

var host = server.address().address
var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)

})

[/code]

Nhấn F5 để chạy, rồi Gõ URI sau vào trình duyệt bất kỳ (http://localhost:1337/products), kết quả:

Như vậy các bạn đã biết cách sử dụng express, nodejs để viết RESTful cho 1 ví dụ về get lấy danh sách Product trong 1 file Json (có nhiều thư viện, hoặc không cần dùng thư viện cũng được, các bạn có thể tìm thêm trên Google).

Source code ví dụ mẫu lấy danh sách Product thì file JSON, tải ở đây.

Bài sau Tui sẽ hướng dẫn các Thím cách coding với HTTPOST, HTTPGET, HTTPPUT, HTTPDELETE để tương tác dữ liệu MongoDB trong NodeJS như thế nào. Các Thím chú ý theo dõi nhé

Các khóa học online khác, bạn có thể tham khảo tại đây: https://unica.vn/?aff=11929

Chúc các bạn thành công!

One thought on “Bài 22-NodeJS RESTful Web Services – Phần 1”

Leave a Reply