1. Trang chủ
  2. » Tất cả

Xây dựng REST API Service với Node và Express

29 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 6,69 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài 3: giả lập dataset dùng cho project Movie API không có xét kết nối đến csdl MongoDBTa code đọc tập tin json và hiển thị ra web như sau Ghi chú: để hiển thị json ra web đẹp thì cài th

Trang 1

Xây dựng REST API Service với Node và Express

Bài 1 Sơ lược về REST

Trang 3

Để nhận biết các request xử lý như thế nào cần biết HTTP status code

Trang 4

Bài 2: Hello Express

1 Tạo package.json

2 Cài đặt express

3 Và tạo route như sau

hoặc dùng hàm mũi tên và tạo handler riêng và gắn vô như sau

Trang 6

Bài 3: giả lập dataset dùng cho project Movie API (không có xét kết nối đến csdl MongoDB)

Ta code đọc tập tin json và hiển thị ra web như sau

Ghi chú: để hiển thị json ra web đẹp thì cài thêm extension json formatter trong chrome

Trang 7

Bài 4: cú pháp Javascript ES5, ES6 OOP

ES5 (đối tượng là object dưới dạng function) ES6 (dưới dạng class)

Trang 8

Bài 5: xây dựng class MovieStore

index.js sử dụng class đã tạo

Sau đó chỉnh lại route "/" thành "/movies" và chạy web để ra kết quả tương tự

Trang 9

Bài 6: Chuyển hướng route để khi vào "/" cũng truy cập được movies

Trang 10

Bài 7: Xử lý route parameter

Trang 11

Bài 8: Thay đổi HTTP Status Code

Trang 12

Bài 9: Xây dựng API lấy thông tin movie theo tiêu đề

Mở rộng class MovieStore, viết thêm hàm find

Trang 13

ví kết quả của hàm filter trả về mảng nên file index ta kiểm tra chiều dài mảng xem có dữ liệu cần tìm không, nếu không

có thì thiết lập statusCode=404, ngược lại gửi thông tin về client như hình sau

Trang 14

Bài 10: xử lý nhận request body

Lấy dữ liệu ở body gửi lên dạng json gửi lên bằng cách dùng middleware (chuyển dữ liệu từ request vào handler)Bước 1: cài body-parser như sau

npm install save body-parser

Bước 2: dùng body-parser

Để biết client gửi lên với phương thức gì ta code như sau

Trang 15

Bài 11: Xây dựng API thêm movie mới

Viết thêm hàm add cho class MovieStore

Và trong index.js ta gọi hàm add để thêm thông tin từ client gửi bằng post lên server

Trang 16

Bài 12: Kiểm tra request input

Ta làm điều này để tránh trường hợp khi thông tin gửi lên để tìm kiếm không có tiêu đề (title), để người dùng không được bỏ trống title hoặc title toàn ký tự trắng cũng không cho, và kiểm tra xem movie có chưa vì nếu có rồi thì không cầnadd vào nữa,

Như vậy ta cần viết thêm hàm has trong class MovieStore

Trang 17

Bài 13: Cú pháp Javascript ES6 Object assign

Nếu không dùng các gán thì 2 biến cùng trỏ đến tham chiếu và kết quả ảnh hưởng nhau (dùng chung vùng nhớ)

Sau khi dùng assign ta được kết quả phân biệt giữa 2 đối tượng (copy và tạo vùng nhớ riêng)

Trang 18

Bài 14: Cú pháp Javascript ES6 Spread operator (toán tử phân giải của mảng)

Nếu gán giá trị thông thường từ mảng qua mảng thì bị tham chiếu cùng ô nhớ, nên khi thay đổi giá trị mảng này thì mảng kia bị ảnh hưởng

mới an toàn và 2 mảng không bị ảnh hưởng nhau

Trong ES6 ta dùng dấu 3 chấm " "

Trang 19

Truyền nhiều tham số cho hàm, với cách làm trong ES5 sẽ như sau

nhưng nếu tham số truyền cho sum là 1 mảng thì khi chạy sẽ bị sai

Trang 20

Cách giải quyết trong ES6 như sau

ES6 sẽ lấy từng phần tử trong params và truyền từ từ vào hàm sum, chứ không phải lấy nguyên mảng truyền vô hàm, tức

là khi dùng tương đương như sau

Ta cũng có thể truyền nhiều mảng vô như sau

Trang 21

Bài 15: Xây dựng API cập nhật (update) movie, ta dùng phương thức put trong index.js

và đồng thời cài đặt hàm update cho lớp MovieStore

Trang 22

Thuật toán cài đặt hàm update như sau

Đã cài đặt hàm update

Trang 23

Bài 16: Xây dựng API xóa movie, ta dùng http action là delete, ta cần kiểm tra xem có movie không? nếu có thì xóa, ngược lại thì thông báo không tồn tại, action sẽ như sau

và ta vào class MovieStore thêm hàm remove

Trang 24

Bài 17: Xây dựng API tìm kiếm movie

Tóm tắt một số kiến thức cần dùng như sau, querystring

từ dấu "?" trở đi là querystring, và nó chứa trong req.query,

Để kiểm tra chuỗi b có trong chuỗi a hay không ta dùng include

viết code cho index như sau

và ta cài đặt thêm hàm search trong class MovieStore như sau

Trang 25

Bài 18: Phân trang kết quả tìm kiếm

Áp dụng cho các trường hợp dữ liệu lớn ta cần hiển thị từng phần, vì thế client cần gửi các thông số để phân trangPhân trang: tức là chia nhỏ dữ liệu ra và client lấy dần từng phần, client cần gửi page (cho biết trang là bao nhiêu), size (tức là trong 1 trang client cần bao nhiêu kết quả) Ta dùng hàm tách dữ liệu trong khoảng nào đó chính là việc phân trang

Và ta cần biết thêm thông số có tổng số bao nhiêu bộ phim, ta cải tiến code như sau

Trang 26

Nếu query ta chỉ truyền page và không truyền size thì mặc định là 2

Trang 27

Nhưng kết quả hiển thị page là chuỗi không phải số, nên ta cần chuyển thành số để sử dụng

Ghi chú: để đảm bảo dữ liệu trả về là định dạng JSON thì ta không dùng res.send() mà dùng res.json()

Trang 28

Bài 19: sử dụng router

Nhận xét thấy rằng các router đều có dùng "/movies/ " nên ta tách ra như sau

Bước 1: khai báo biến router

Bước 2: đổi các phần app.get(), app.put(), app.post(), app.delete() thành movieRouter.get(), với router đã tạo ở bước 1

Bước 3: đăng ký router

và để truy cập được "/" ta cần ghi app.get("/", ), chứ không được ghi movieRouter.get("/", )

Cải tiến tiếp tục là tác router thành 1 file riêng và gọi vô dùng để file index gọn gàng như sau

Ngày đăng: 12/08/2021, 10:01

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w