Trong bài giảng trước,
chúng tôi đã tìm hiểu về REST API.
Bạn đã thấy cách các điểm cuối API REST
hỗ trợ một cách cho một ứng dụng khách có thể truy xuất
dữ liệu từ máy chủ hoặc tải dữ liệu lên máy chủ bằng cách sử dụng các thao tác HTTP khác nhau.
Trong bài giảng này và bài tập sau bài giảng này,
chúng tôi sẽ xem xét cụ thể về loại hỗ trợ Express
hỗ trợ để thiết kế và triển khai một máy chủ dựa trên REST API.
Đặc biệt, chúng tôi cũng sẽ xem xét bộ định tuyến Express,
và làm thế nào nó cho phép chúng tôi chia nhỏ ứng dụng của chúng tôi và
sau đó tổ chức nó thành nhiều ứng dụng giống như Express nhỏ,
kết hợp với nhau để tạo thành ứng dụng Express,
đặc biệt khi chúng tôi đang đối phó với các API REST khác nhau và các bộ phận.
Vì vậy, để tóm tắt, trong bài giảng trước đó,
chúng tôi đã kiểm tra REST một cách chi tiết.
Chúng tôi cũng xem xét cách mỗi điểm cuối được xác định bởi một URI,
và làm thế nào chúng tôi có thể xác định các hoạt động khác nhau được thực hiện trên
mỗi điểm cuối bằng cách sử dụng động từ HTTP thích hợp,
GET, PUT, POST, hoặc DELETE.
Bây giờ trong bài giảng này,
chúng ta sẽ xem xét cách Express hỗ trợ sự phát triển của một máy chủ REST API.
Chúng ta sẽ xem xét sự hỗ trợ của Express cho các vấn đề khác nhau như app.all,
app.get, put, post và delete,
và cách các phương pháp này có thể được sử dụng để xây dựng một máy chủ REST API.
Trong Express, các nhóm ứng dụng khác nhau có thể được xác định bằng cách sử dụng, ứng dụng.
và các phương pháp khác nhau.
Vì vậy, app.all chỉ định một thao tác cần được thực hiện trên tất cả các động từ khác nhau,
trên, trong và một phần.
Ví dụ, trong ví dụ này,
chúng ta thấy rằng điểm cuối được định nghĩa bởi /dishes,
và vì vậy app.all, bất cứ điều gì được chỉ định trong chức năng được đưa ra cho app.all,
sẽ được áp dụng cho tất cả các yêu cầu đến.
app.get xác định những gì cần phải được thực hiện cho các yêu cầu GET và,
tương ứng, cho các
yêu cầu POST, PUT và DELETE được gửi đến điểm cuối /dishes,
như minh họa trong ví dụ này.
Express cũng hỗ trợ xác định các điểm cuối với các tham số.
Vì vậy, ví dụ, bạn có thể chỉ định một ID món ăn cụ thể nếu bạn muốn,
và sau đó cho phép thao tác được thực hiện cho
điểm cuối cụ thể đề cập đến món ăn cụ thể đó với một ID món ăn nhất định.
Vì vậy, trong trường hợp này, bản thân món ăn ID được
chỉ định như là một tham số và mẫu được sử dụng cho đó là,
như bạn thấy trong ví dụ này,
/dishes/: và sau đó bạn sẽ chỉ định tham số ở đây.
Để làm cho nó dễ dàng cho chúng ta để hiểu,
tôi đặt tên tham số là DisHid trong đó.
Bạn có thể sử dụng bất kỳ tên tham số nào mà bạn chọn để, nhưng một lần nữa,
sử dụng một tên có ý nghĩa cho một tham số làm cho nó dễ dàng hơn để hiểu mã.
Vì vậy, trong ví dụ này,
các:DISHID có nghĩa là nếu chúng ta phát hành một yêu cầu đến một điểm cuối
, nói ví dụ, /dishes/23,
sau đó các tham số DisHID cho phép chúng ta trích xuất số này 23 để chúng ta
có thể hoạt động trên món ăn số 23
trong chức năng được quy định bên trong phương pháp này ở đây.
Vì vậy, trong đó, tham số, tham số
DisHid chính nó có thể được thu được bằng cách sử dụng đối tượng yêu cầu mà trên đó
thuộc tính params bạn hỗ trợ và
thuộc tính params hỗ trợ tất cả các tham số yêu cầu đến,
và DisHid, đặc biệt,
là một trong những tham số yêu cầu mà có thể được truy cập,
như thể hiện trong mã ở đây.
Khi bạn gửi một PUT hoặc một yêu cầu POST từ máy khách đến máy chủ,
bạn thường kèm theo dữ liệu trong nội dung của thư được gửi đến máy chủ.
Bây giờ, điều đó có nghĩa là chúng ta cần một
phương pháp trích xuất thông tin từ nội dung của thông điệp.
Vì vậy, đây là nơi phân tích cú pháp cơ thể middleware cho Express là rất hữu ích.
Vì vậy, bộ phân tích cơ thể cho phép chúng ta phân tích các thông tin từ cơ thể của thông điệp.
Để sử dụng bộ phân tích cú pháp cơ thể, như chúng ta mong đợi,
chúng tôi sẽ cài đặt mô-đun nút phân tích cú pháp cơ thể,
và sau đó yêu cầu nó trong ứng dụng Express của chúng tôi,
và sau đó chỉ định app.use (BodyParser).
Và nếu cơ thể chứa dữ liệu ở định dạng JSON,
bạn có thể nói BodyParser.json,
do đó, điều đó có nghĩa là điều này sẽ phân tích chỉ dữ liệu ở
định dạng JSON được kèm theo trong nội dung của thông điệp yêu cầu đó.
Đặc biệt, trong bài tập,
chúng ta sẽ phân tích dữ liệu đến được gửi dưới dạng một chuỗi JSON.
Phân tích cú pháp cơ thể, như bạn mong đợi,
phân tích phần nội dung của thư và cư thuộc tính req.body.
Vì vậy, theo yêu cầu,
thuộc tính cơ thể sẽ chứa bất cứ điều gì được phân tích cú pháp trong từ
cơ thể của thông điệp yêu cầu bởi bộ phân tích cơ thể.
Nếu bạn đang thực hiện một ứng
dụng Express hỗ trợ nhiều điểm cuối REST API,
thì nó có ý nghĩa để chia nhỏ mã thành
nhiều mô-đun và sau đó sử dụng chúng để xây dựng ứng dụng Express tổng thể.
Vì vậy, nơi bộ định tuyến Express đến với sự trợ giúp của chúng tôi.
Một bộ định tuyến Express định nghĩa nhiều ứng dụng Express,
và trong đó nhiều ứng dụng Express,
bạn có thể, ví dụ,
đối phó với một điểm cuối REST API cụ thể chi tiết hơn,
hoặc một mô hình cụ thể của điểm cuối REST API chi tiết hơn.
Vì vậy, ví dụ, chúng ta có thể xác định một DishRouter như Express.Router,
và sau đó DishRouter sau đó có thể xử lý các điểm cuối.
Vì vậy, khi bạn thể hiện một cái gì đó như Express.Router,
nó hỗ trợ điểm cuối tuyến đường.
Một trong những lý do để sử dụng Express router,
như bạn sẽ nhận ra,
là nếu chúng ta sử dụng các
phương pháp GET, PUT, POST và DELETE ứng dụng chuẩn,
cho mỗi một trong những phương pháp này,
bạn cần phải xác định rõ ràng điểm cuối REST API.
Một lợi thế của việc sử dụng bộ định tuyến Express là nếu bạn
nói Router.route và sau đó xác định điểm cuối, điểm cuối
đó sẽ được áp dụng cho tất cả các phương pháp và tất cả các
phương pháp liên quan đến GET, PUT, POST và DELETE khác nhau có thể được xích lại
với nhau vào các tuyến đường trong việc xác định mã cho ứng dụng của chúng tôi.
Chúng ta sẽ xem xét thêm chi tiết về điều này trong bài tập sau bài giảng này.
Với sự hiểu biết nhanh chóng này về cách Express hỗ trợ REST API điểm cuối, chúng ta
hãy chuyển sang bài tập nơi chúng tôi sẽ xây dựng
hỗ trợ của họ cho /dishes REST API điểm cuối.
Là một phần của nhiệm vụ đầu tiên,
bạn sẽ tiếp tục mở rộng
ứng dụng Express này để hỗ trợ các điểm cuối API REST bổ sung,
bao gồm /promotions và /leaders.
Nếu bạn đã thực hiện các khóa học trước đó trong chuyên môn hóa,
bạn sẽ ngay lập tức bắt đầu xem lý do tại sao chúng tôi đang hỗ trợ
tất cả các điểm cuối REST API khác nhau ở phía máy chủ khác.