Mô-đun Node http

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.Agentlớ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.Agentmô 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.Serverlớ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.ClientRequestlớ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.Agentlớ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,responsesự kiện được gọi với phản hồi, với mộthttp.IncomingMessageví 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ọiresponse.read()phương pháp
  • bên trongresponsetrình xử lý sự kiện, bạn có thể thiết lập trình xử lý sự kiện chodatasự 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ới
  • listen()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.Servervà được truyền dưới dạng tham số thứ hai chorequestsự 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 đặt
  • getHeaders()nhận một bản sao của các tiêu đề HTTP đã được thiết lập
  • setHeader('headername', value)đặt giá trị tiêu đề HTTP
  • getHeader('headername')có một tiêu đề HTTP đã được thiết lập
  • removeHeader('headername')xóa tiêu đề HTTP đã được đặt
  • hasHeader('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 đặtstatusCodestatusMessagegiá 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.Serverkhi ngherequestbiến cố
  • http.ClientRequestkhi ngheresponsebiến cố

Nó có thể được sử dụng để truy cập phản hồi:

  • tình trạng sử dụng nóstatusCodestatusMessagephương pháp
  • tiêu đề bằng cách sử dụng nóheadersphương pháp hoặcrawHeaders
  • Phương thức HTTP sử dụngmethodphương pháp
  • Phiên bản HTTP sử dụnghttpVersionphương pháp
  • URL sử dụngurlphương pháp
  • ổ cắm bên dưới bằng cách sử dụngsocketphương pháp

Dữ liệu được truy cập bằng cách sử dụng các luồng, vìhttp.IncomingMessagetriể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: