Mô-đun http của Node.js cung cấp các chức năng và lớp hữu ích để xây dựng máy chủ HTTP
Mô-đun lõi HTTP là một mô-đun quan trọng đối với mạng Node.
Nó có thể được bao gồm bằng cách sử dụng
const http = require('http')
Mô-đun cung cấp một số thuộc tính và phương thức, và một số lớp.
Tính chất
http.METHODS
Thuộc tính này liệt kê tất cả các phương thức HTTP được hỗ trợ:
> require('http').METHODS
[ 'ACL',
'BIND',
'CHECKOUT',
'CONNECT',
'COPY',
'DELETE',
'GET',
'HEAD',
'LINK',
'LOCK',
'M-SEARCH',
'MERGE',
'MKACTIVITY',
'MKCALENDAR',
'MKCOL',
'MOVE',
'NOTIFY',
'OPTIONS',
'PATCH',
'POST',
'PROPFIND',
'PROPPATCH',
'PURGE',
'PUT',
'REBIND',
'REPORT',
'SEARCH',
'SUBSCRIBE',
'TRACE',
'UNBIND',
'UNLINK',
'UNLOCK',
'UNSUBSCRIBE' ]
http.STATUS_CODES
Thuộc tính này liệt kê tất cả các mã trạng thái HTTP và mô tả của chúng:
> require('http').STATUS_CODES
{ '100': 'Continue',
'101': 'Switching Protocols',
'102': 'Processing',
'200': 'OK',
'201': 'Created',
'202': 'Accepted',
'203': 'Non-Authoritative Information',
'204': 'No Content',
'205': 'Reset Content',
'206': 'Partial Content',
'207': 'Multi-Status',
'208': 'Already Reported',
'226': 'IM Used',
'300': 'Multiple Choices',
'301': 'Moved Permanently',
'302': 'Found',
'303': 'See Other',
'304': 'Not Modified',
'305': 'Use Proxy',
'307': 'Temporary Redirect',
'308': 'Permanent Redirect',
'400': 'Bad Request',
'401': 'Unauthorized',
'402': 'Payment Required',
'403': 'Forbidden',
'404': 'Not Found',
'405': 'Method Not Allowed',
'406': 'Not Acceptable',
'407': 'Proxy Authentication Required',
'408': 'Request Timeout',
'409': 'Conflict',
'410': 'Gone',
'411': 'Length Required',
'412': 'Precondition Failed',
'413': 'Payload Too Large',
'414': 'URI Too Long',
'415': 'Unsupported Media Type',
'416': 'Range Not Satisfiable',
'417': 'Expectation Failed',
'418': 'I\'m a teapot',
'421': 'Misdirected Request',
'422': 'Unprocessable Entity',
'423': 'Locked',
'424': 'Failed Dependency',
'425': 'Unordered Collection',
'426': 'Upgrade Required',
'428': 'Precondition Required',
'429': 'Too Many Requests',
'431': 'Request Header Fields Too Large',
'451': 'Unavailable For Legal Reasons',
'500': 'Internal Server Error',
'501': 'Not Implemented',
'502': 'Bad Gateway',
'503': 'Service Unavailable',
'504': 'Gateway Timeout',
'505': 'HTTP Version Not Supported',
'506': 'Variant Also Negotiates',
'507': 'Insufficient Storage',
'508': 'Loop Detected',
'509': 'Bandwidth Limit Exceeded',
'510': 'Not Extended',
'511': 'Network Authentication Required' }
http.globalAgent
Trỏ đến phiên bản chung của đối tượng Agent, là một phiên bản củahttp.Agent
lớp học.
Nó được sử dụng để quản lý sự tồn tại và tái sử dụng của các kết nối cho các máy khách HTTP và nó là một thành phần chính của mạng Node HTTP.
Thêm tronghttp.Agent
mô tả lớp sau này.
Phương pháp
http.createServer()
Trả lại một phiên bản mới củahttp.Server
lớp học.
Sử dụng:
const server = http.createServer((req, res) => {
//handle every single request with this callback
})
http.request()
Thực hiện một yêu cầu HTTP đến một máy chủ, tạo ra một phiên bản củahttp.ClientRequest
lớp học.
http.get()
Tương tự vớihttp.request()
, nhưng tự động đặt phương thức HTTP thành GET và gọireq.end()
tự động.
Các lớp học
Mô-đun HTTP cung cấp 5 lớp:
http.Agent
http.ClientRequest
http.Server
http.ServerResponse
http.IncomingMessage
http.Agent
Node tạo một phiên bản chung củahttp.Agent
lớp để quản lý sự tồn tại và tái sử dụng kết nối cho các máy khách HTTP, một thành phần chính của mạng Node HTTP.
Đối tượng này đảm bảo rằng mọi yêu cầu gửi đến máy chủ đều được xếp hàng đợi và một ổ cắm duy nhất được sử dụng lại.
Nó cũng duy trì một nhóm các ổ cắm. Đây là chìa khóa cho các lý do hiệu suất.
http.ClientRequest
Anhttp.ClientRequest
đối tượng được tạo ra khihttp.request()
hoặc làhttp.get()
được gọi là.
Khi nhận được phản hồi,response
sự kiện được gọi với phản hồi, với mộthttp.IncomingMessage
ví dụ như đối số.
Dữ liệu trả về của một phản hồi có thể được đọc theo 2 cách:
- bạn có thể gọi
response.read()
phương pháp - bên trong
response
trình xử lý sự kiện, bạn có thể thiết lập trình xử lý sự kiện chodata
sự kiện, vì vậy bạn có thể lắng nghe dữ liệu được truyền vào.
http.Server
Lớp này thường được khởi tạo và trả về khi tạo một máy chủ mới bằng cách sử dụnghttp.createServer()
.
Khi bạn có một đối tượng máy chủ, bạn có quyền truy cập vào các phương thức của nó:
close()
ngăn máy chủ chấp nhận các kết nối mớilisten()
khởi động máy chủ HTTP và lắng nghe các kết nối
http.ServerResponse
Tạo bởi mộthttp.Server
và được truyền dưới dạng tham số thứ hai chorequest
sự kiện nó cháy.
Thường được biết đến và sử dụng trong mã nhưres
:
const server = http.createServer((req, res) => {
//res is an http.ServerResponse object
})
Phương thức bạn sẽ luôn gọi trong trình xử lý làend()
, đóng phản hồi, thông báo hoàn tất và máy chủ có thể gửi nó đến máy khách. Nó phải được gọi trên mỗi phản hồi.
Các phương pháp này được sử dụng để tương tác với các tiêu đề HTTP:
getHeaderNames()
lấy danh sách tên của các tiêu đề HTTP đã được đặtgetHeaders()
nhận một bản sao của các tiêu đề HTTP đã được thiết lậpsetHeader('headername', value)
đặt giá trị tiêu đề HTTPgetHeader('headername')
có một tiêu đề HTTP đã được thiết lậpremoveHeader('headername')
xóa tiêu đề HTTP đã được đặthasHeader('headername')
trả về true nếu phản hồi có bộ tiêu đề đóheadersSent()
trả về true nếu tiêu đề đã được gửi đến máy khách
Sau khi xử lý các tiêu đề, bạn có thể gửi chúng cho khách hàng bằng cách gọiresponse.writeHead()
, chấp nhận Mã trạng thái làm tham số đầu tiên, thông báo trạng thái tùy chọn và đối tượng tiêu đề.
Để gửi dữ liệu đến máy khách trong phần nội dung phản hồi, bạn sử dụngwrite()
. Nó sẽ gửi dữ liệu được đệm đến luồng phản hồi HTTP.
Nếu tiêu đề chưa được gửi bằng cách sử dụngresponse.writeHead()
, nó sẽ gửi tiêu đề trước, với mã trạng thái và thông báo được đặt trong yêu cầu, bạn có thể chỉnh sửa bằng cách đặtstatusCode
vàstatusMessage
giá trị thuộc tính:
response.statusCode = 500
response.statusMessage = 'Internal Server Error'
http.IncomingMessage
Anhttp.IncomingMessage
đối tượng được tạo bởi:
http.Server
khi ngherequest
biến cốhttp.ClientRequest
khi ngheresponse
biến cố
Nó có thể được sử dụng để truy cập phản hồi:
- tình trạng sử dụng nó
statusCode
vàstatusMessage
phương pháp - tiêu đề bằng cách sử dụng nó
headers
phương pháp hoặcrawHeaders
- Phương thức HTTP sử dụng
method
phương pháp - Phiên bản HTTP sử dụng
httpVersion
phương pháp - URL sử dụng
url
phương pháp - ổ cắm bên dưới bằng cách sử dụng
socket
phương pháp
Dữ liệu được truy cập bằng cách sử dụng các luồng, vìhttp.IncomingMessage
triển khai giao diện Dòng có thể đọc.
Tải xuống miễn phí của tôiSổ tay Node.js
Các hướng dẫn nút khác:
- Giới thiệu về trình quản lý gói npm
- Giới thiệu về Node.js
- Yêu cầu HTTP bằng Axios
- Nơi lưu trữ ứng dụng Node.js
- Tương tác với API Google Analytics bằng Node.js
- Trình chạy gói nút npx
- Hướng dẫn package.json
- Npm cài đặt các gói ở đâu?
- Cách cập nhật Node.js
- Cách sử dụng hoặc thực thi một gói được cài đặt bằng npm
- Tệp package-lock.json
- Phiên bản ngữ nghĩa sử dụng npm
- Bạn có nên cam kết thư mục node_modules cho Git không?
- Cập nhật tất cả các phụ thuộc Node lên phiên bản mới nhất của chúng
- Phân tích cú pháp JSON với Node.js
- Tìm phiên bản đã cài đặt của gói npm
- Luồng Node.js
- Cài đặt phiên bản cũ hơn của gói npm
- Lấy thư mục hiện tại trong Node
- Cách đăng nhập một đối tượng trong Node
- Thể hiện chức năng từ tệp Node bằng cách sử dụng xuất
- Sự khác biệt giữa Node và Browser
- Thực hiện yêu cầu HTTP POST bằng Node
- Nhận dữ liệu nội dung yêu cầu HTTP bằng Node
- Bộ đệm nút
- Sơ lược về lịch sử Node.js
- Cách cài đặt Node.js
- Bạn cần biết bao nhiêu JavaScript để sử dụng Node?
- Cách sử dụng Node.js REPL
- Nút, chấp nhận các đối số từ dòng lệnh
- Xuất ra dòng lệnh bằng Node
- Chấp nhận đầu vào từ dòng lệnh trong Node
- Gỡ cài đặt gói npm với `` npm gỡ cài đặt ''
- gói npm toàn cầu hoặc cục bộ
- npm phụ thuộc và devDependencies
- Vòng lặp sự kiện Node.js
- Hiểu process.nextTick ()
- Hiểu setIm Instant ()
- Bộ phát sự kiện nút
- Xây dựng một máy chủ HTTP
- Thực hiện các yêu cầu HTTP với Node
- Mô-đun Node fs
- Yêu cầu HTTP trong Node bằng Axios
- Đọc tệp bằng Node
- Đường dẫn tệp nút
- Viết tệp bằng Node
- Số liệu thống kê về tệp nút
- Làm việc với bộ mô tả tệp trong Node
- Làm việc với các thư mục trong Node
- Mô-đun đường dẫn nút
- Mô-đun Node http
- Sử dụng WebSockets với Node.js
- Những điều cơ bản về cách làm việc với MySQL và Node
- Xử lý lỗi trong Node.js
- Hướng dẫn Pug
- Cách đọc các biến môi trường từ Node.js
- Cách thoát khỏi chương trình Node.js
- Mô-đun hệ điều hành Node
- Mô-đun sự kiện Node
- Nút, sự khác biệt giữa phát triển và sản xuất
- Cách kiểm tra xem tệp có tồn tại trong Node.js hay không
- Cách tạo tệp trống trong Node.js
- Cách xóa tệp bằng Node.js
- Cách lấy ngày cập nhật cuối cùng của tệp bằng Node.js
- Cách xác định một ngày có phải là hôm nay trong JavaScript hay không
- Cách ghi một đối tượng JSON vào tệp trong Node.js
- Tại sao bạn nên sử dụng Node.js trong dự án tiếp theo của mình?
- Chạy một máy chủ web từ bất kỳ thư mục nào
- Cách sử dụng MongoDB với Node.js
- Sử dụng Công cụ dành cho nhà phát triển của Chrome để gỡ lỗi ứng dụng Node.js
- Pnpm là gì?
- Danh sách tùy chọn Node.js Runtime v8
- Cách khắc phục lỗi "Thiếu quyền ghi" khi sử dụng npm
- Cách bật Mô-đun ES trong Node.js
- Cách sinh ra một quy trình con với Node.js
- Cách lấy cả nội dung được phân tích cú pháp và nội dung thô trong Express
- Cách xử lý tải lên tệp trong Node.js
- Sự phụ thuộc ngang hàng trong một mô-đun Node là gì?
- Cách ghi tệp CSV với Node.js
- Cách đọc tệp CSV với Node.js
- Mô-đun lõi Node
- Tăng số lượng nhiều thư mục cùng một lúc bằng Node.js
- Cách in canvas thành URL dữ liệu
- Cách tạo và lưu hình ảnh với Node.js và Canvas
- Cách tải xuống hình ảnh bằng Node.js
- Cách đổi tên hàng loạt tệp trong Node.js
- Cách lấy tên của tất cả các tệp trong một thư mục trong Node
- Cách sử dụng các lời hứa và chờ đợi với các hàm dựa trên cuộc gọi lại của Node.js
- Cách kiểm tra một gói npm cục bộ
- Cách kiểm tra phiên bản Node.js hiện tại khi chạy
- Cách sử dụng Sequelize để tương tác với PostgreSQL
- Cung cấp trang HTML bằng Node.js
- Cách giải quyết lỗi `use.pump không phải là hàm` trong Node.js