Trong bài giảng trước đó,
chúng tôi đã tìm hiểu về các yếu tố cần thiết của mạng bao gồm các chi tiết của giao thức HTTP.
Bây giờ, chúng ta sẽ xem xét cách Node có thể được sử dụng để xây dựng một máy chủ HTTP.
Đây là nơi mà mô-đun HTTP lõi được tích hợp vào Node đến với sự trợ giúp của chúng tôi.
Ngoài ra, chúng ta sẽ xem xét một vài module Node cốt lõi khác hữu ích cho việc
xây dựng một máy chủ HTTP từ việc sử dụng Node.
Vì vậy, làm thế nào để chúng ta sử dụng các mô-đun HTTP Node?
Như tôi đã đề cập, mô-đun HTTP là một trong những mô-đun cốt lõi được tích hợp vào Node.
Vì vậy, đây là một mô-đun mạng cốt lõi hỗ trợ
một nền tảng hiệu suất cao cho HTTP stack.
Vì vậy, việc sử dụng mô-đun trong ứng dụng Node của chúng
tôi đòi hỏi chúng tôi phải nhập mô-đun vào ứng dụng của chúng tôi.
Vì vậy, đây là những gì chúng ta làm bằng cách nói const HTTP = yêu cầu và,
tên của HTTP module có.
Bây giờ, một khi mô-đun được nhập khẩu,
sau đó mô-đun HTTP này hỗ trợ một chức năng CreateServer mà mất,
như một tham số, một chức năng hoạt động như
một hàm callback cho mô-đun CreateServer và
chức năng này có hai tham số: request và response.
Yêu cầu là thông điệp yêu cầu đến từ
phía khách hàng và chúng ta có thể phân tích thông điệp yêu cầu và sau đó trích xuất
rất nhiều thông tin từ thông điệp yêu cầu và sử dụng nó để
đưa ra quyết định về cách chúng ta xây dựng thông điệp phản hồi tương ứng với thông điệp đó.
Thông điệp phản hồi được xây dựng bằng cách sử dụng tham số thứ hai ở đây, res,
trên đó chúng ta có thể xây dựng các giá trị tiêu đề khác nhau cho
thông điệp phản hồi HTTP của chúng tôi và cũng là cơ thể của thông điệp phản hồi HTTP.
Bây giờ, để khởi động máy chủ,
một khi bạn tạo máy chủ,
sau đó bạn sẽ nói server.listen và sau đó cung cấp số cổng
và tên máy chủ cho máy chủ và điều đó sẽ khởi động máy chủ của chúng tôi.
Chúng ta sẽ xem xét một số chi tiết trong bài tập ví dụ sau bài giảng này.
Như tôi đã đề cập, thông tin thư thoại yêu cầu đến có sẵn
thông qua tham số req chức năng mất trong phương pháp CreateServer.
Vì vậy, req hoặc request,
nếu bạn muốn cung cấp cho nó tên đầy đủ,
bạn có thể gọi nó như là một yêu cầu nhưng nói chung chúng tôi đã tìm thấy rằng trong
ví dụ chúng tôi đã sử dụng req để đại diện cho thông điệp yêu cầu.
Nó hỗ trợ trên các thuộc tính đối tượng Javascript như tiêu đề,
nội dung và các thông tin khác nhau có thể được trích xuất,
URL và phương thức đã được yêu cầu bởi trang web khách hàng đó.
Và,
để đáp lại, bạn xây dựng phản hồi bằng cách sử dụng đối tượng Javascript phản hồi hỗ trợ chức năng SeTheader đó, chức năng StatusCode có thể được đặt thành mã trạng thái của thông điệp phản hồi.
Và sau đó bạn sẽ viết tin nhắn nói
res.write và bạn sẽ kết thúc tin nhắn bằng cách nói
res.end và đó sẽ mất phần cuối cùng của cơ thể cho tin nhắn.
Nội dung có thể là văn bản tiêu chuẩn hoặc HTML hoặc
bất kỳ thông tin nào khác mà bạn muốn kèm theo bên trong nội dung của thư trả lời đó.
Nhưng một khi res.end được gọi,
trả lời được gửi lại cho khách hàng từ máy chủ HTTP.
Hai module lõi khác có ích cho chúng ta
khi chúng ta đang xây dựng máy chủ Node HTTP là module đường dẫn Node.
Mô-đun đường dẫn cho phép chúng tôi xác định đường dẫn đến một tập tin và sau đó
kiểm tra xem các tập tin tồn tại hoặc kiểm tra thêm chi tiết về một tập tin.
Ví dụ: phần mở rộng của tệp,
tên và vân vân.
Vì vậy, mô-đun đường dẫn có thể được sử dụng trong
ứng dụng của chúng tôi bằng cách yêu cầu mô-đun đường dẫn như được hiển thị ở đây.
Và sau đó, điều này hỗ trợ các phương pháp
, ví dụ như path.resolve,
mà sẽ chuyển đổi một đường dẫn tương đối thành
một đường dẫn tuyệt đối mà toàn bộ đường dẫn đến tập tin.
Bạn cũng có thể kiểm tra tên phần mở rộng cho tệp bằng cách gọi
hàm path.extname và cung cấp đường dẫn tệp sẽ
kiểm tra phần mở rộng của tên tệp.
Tương tự, mô-đun hệ thống tập tin,
một lần nữa là một mô-đun lõi trong Node,
sẽ cho phép chúng ta đọc và ghi các
tập tin tồn tại trong hệ thống tập tin cục bộ trên máy tính.
Vì vậy, các mô-đun hệ thống tập tin có thể được sử dụng trong
ứng dụng Node của chúng tôi bằng cách yêu cầu nó như được hiển thị ở đây.
Và sau đó, các mô-đun hệ thống tập tin hỗ trợ nhiều phương pháp
bao gồm một phương pháp để kiểm tra xem tập tin có tồn tại trong hệ thống tập tin cục bộ hay không.
Vì vậy, fs.exists sẽ lấy
FilePath làm tham số đầu tiên và tham số thứ hai là
một hàm callback mà sẽ trở lại với một tham số mà chúng ta có thể đặt tên nó là tồn tại.
Tham số này, tồn tại, sẽ là đúng nếu tập tin
tồn tại và sẽ là sai nếu tập tin không tồn tại trong hệ thống tập tin cục bộ.
Tương tự như vậy, bạn có thể đọc từ tập tin bằng cách tạo ra một luồng đọc cho đường dẫn tập tin.
Vì vậy, bạn có thể nói Fs.CreateReadStream và
FilePath và điều này có thể được truyền vào thông báo phản hồi.
Vì vậy, tập tin sẽ được đọc trong từ tập tin được
đưa ra bởi FilePath và sau đó các nội dung sẽ được đưa
vào nội dung của thông điệp phản hồi bằng cách gọi một chuỗi chức năng như được hiển thị ở đây.
Vì vậy, đây là một số ví dụ về một số module Node cốt lõi sẽ rất
hữu ích khi chúng ta đang xây dựng một máy chủ HTTP sử dụng Node.
Bây giờ, chúng ta hiểu một số chi tiết về máy chủ HTTP và làm thế nào nó có thể được xây dựng, chúng ta
hãy đi đến bài tập,
nơi chúng ta sẽ xây dựng một máy chủ HTTP đơn giản mà đầu tiên sẽ phục vụ lên một
số thông tin cơ bản và sau đó chúng tôi sẽ phục vụ lên các tập tin
tồn tại trong một thư mục công cộng trong dự án của chúng tôi.