Home Web Front-end JS Tutorial Analysis of the Http module of Nodejs

Analysis of the Http module of Nodejs

Jun 30, 2018 pm 03:28 PM
nodejs module

This article mainly introduces the analysis of the Http module of Nodejs. It has a certain reference value. Now I share it with you. Friends in need can refer to it.

We know that the traditional HTTP server is composed of It is built with software such as Aphche, Nginx, IIS, etc., but Nodejs does not need it. Nodejs provides the http module, which can be used to build the server. This article will introduce the Http module of Nodejs to you. Friends who need it can refer to it. Bar

1. http server

We know that traditional HTTP servers are built by software such as Aphche, Nginx, and IIS. But Nodejs does not need it. Nodejs provides an http module, which can be used to build a server. For example:

var http = require("http");
http.createServer(function(req,res) {
 res.writeHead(200,{
  "content-type":"text/plain"
 });
 res.write("Hello NodeJs");
 res.end();
}).listen(3000);
Copy after login

The http module encapsulates an HTTP server and A simple HTTP client: http.Server() is used to create an event-based HTTP server, and http.request() and http.get() can serve as clients to initiate requests to the HTTP server. The createServer() method used here returns an http.Server object. text/plain means to set the file to plain text format. The browser will not process such a file when it obtains it. If content is -type is set to text/html. When the browser obtains this kind of file, it will automatically call the HTML parser to process the file accordingly. In addition, you can also use the new http.Server() constructor method to create an http.Server object, for example:

var http = require("http");
var server = new http.Server();
server.on("request",function(req,res) {
  ...
}).listen(3000);
Copy after login

The above code is to directly create an http. .Server object, and then add a request event listener to it. The http.Server object created using the createServer() method adds a request event listener by default, but it is omitted.

The events of http.Server are mentioned above. The most commonly used event of http.Server is "request", which is triggered when an http request is received. In the "request" event, the parameters req and res passed into the callback function are instances of http.IncomingMessage and http.ServerResponse respectively:

http.IncomingMessage class contains the http request information sent from the client, It can be used to access response status, message headers, and data, etc., for example:

*headers/<object> - 请求头或响应头的对象
*httpVersion/<string> - http协议版本,可能的值有"1.1"或"1.0"
*method/<string> - 请求的方法,例如"GET"、"POST"等
*statusCode/<number> - http响应状态码
*statusMessage/<string> - http响应状态消息
*url/<string> - 发送http请求的客户端的url
Copy after login

http.ServerResponse class is the information returned to the client, It has three important methods for returning response headers, response content and ending the request:

writeHead(statusCode[, statusMessage][,headers]): Send response headers to the requesting client. This function is in Called at most once in a request. If not called, a response header will be automatically generated

write(chunk[,encoding][,callback]): Send response content to the requesting client, chunk is a buffer Or a string. If chunk is a string, you need to specify the encoding method. The default is utf-8. You can call

end([data ][,encoding][,callback]): End response, inform the client that all sending has ended. If this function is not called, the client will always be in a waiting state.

For other http.Server class events, please refer to Official document: http://nodejs.cn/api/http.html

2. http clienthttp module provides http The two methods .request() and http.get() function as a client to initiate requests to the http server.

http.request(options[,callback])方法
http.request()方法返回一个http.ClientRequest的实例。其中,options是一个对象,表示请求的参数。包括:
*protocol/<string> - 使用的协议,默认为http
*host/<string> - 请求发送至的服务器的域名或 IP 地址,默认为"localhost"
*hostname/<string> - host的别名
*port/<number> - 远程服务器的端口号,默认为80
*method/<string> - 指定http请求方法,默认为"GET"
*path/<string> - 请求相对于根的路径,默认是"/",QueryString应该包含在其中。例如:/index.html?page=12
*headers/<object> - 包含请求头的对象
*timeout/<number> - 它设置了 socket 等待连接的超时时间
Copy after login

For example:

var http = require("http");
var querystring = require("querystring");
var postData = querystring.stringify({
  "content":"测试一下",
  "mid":8837
});
var options = {
  hostname:"www.imooc.com",
  port:80,
  path:"/course/document",
  method:"POST",
  headers:{
    "Accept":"application/json, text/javascript, */*; q=0.01",
    "Accept-Encoding":"gzip, deflate",
    "Accept-Language":"zh-CN,zh;q=0.8",
    "Connection":"keep-alive",
    "Content-Length":postData.length,
    "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
    "Cookie":"",
    "Host":"www.imooc.com",
    "Origin":"http://www.imooc.com",
    "Referer":"http://www.imooc.com/video/8837",
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2763.0 Safari/537.36",
    "X-Requested-With":"XMLHttpRequest",
  }
}
var req = http.request(options,function(res){
  res.on("data",function(chunk){
    console.log(chunk);
  });
  res.on("end",function(){
    console.log("完毕!");
  });
  console.log(res.statusCode);
});
req.on("error",function(err){
  console.log(err.message);
})
req.write(postData);
req.end();
Copy after login

If any error is encountered during the request, then The "error" event will be triggered in the returned request object;

Using http.request() must always call req.end() to indicate the end of the request, even if no data is written to the body

http.get(options[,callback]) method


http.get() method is a simplified version of http.request() method. The main difference is that http.get() automatically The request method is set to "GET" request, and there is no need to manually call req.end()

The above is the entire content of this article. I hope it will be helpful to everyone's learning. For more related content, please pay attention to the PHP Chinese website !

Related recommendations:

Introduction to the use of the Request module in Node.js to handle HTTP protocol requests


The cluster module in Node Learning


The above is the detailed content of Analysis of the Http module of Nodejs. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

The difference between nodejs and vuejs The difference between nodejs and vuejs Apr 21, 2024 am 04:17 AM

Node.js is a server-side JavaScript runtime, while Vue.js is a client-side JavaScript framework for creating interactive user interfaces. Node.js is used for server-side development, such as back-end service API development and data processing, while Vue.js is used for client-side development, such as single-page applications and responsive user interfaces.

Is nodejs a backend framework? Is nodejs a backend framework? Apr 21, 2024 am 05:09 AM

Node.js can be used as a backend framework as it offers features such as high performance, scalability, cross-platform support, rich ecosystem, and ease of development.

How to connect nodejs to mysql database How to connect nodejs to mysql database Apr 21, 2024 am 06:13 AM

To connect to a MySQL database, you need to follow these steps: Install the mysql2 driver. Use mysql2.createConnection() to create a connection object that contains the host address, port, username, password, and database name. Use connection.query() to perform queries. Finally use connection.end() to end the connection.

What are the global variables in nodejs What are the global variables in nodejs Apr 21, 2024 am 04:54 AM

The following global variables exist in Node.js: Global object: global Core module: process, console, require Runtime environment variables: __dirname, __filename, __line, __column Constants: undefined, null, NaN, Infinity, -Infinity

What is the difference between npm and npm.cmd files in the nodejs installation directory? What is the difference between npm and npm.cmd files in the nodejs installation directory? Apr 21, 2024 am 05:18 AM

There are two npm-related files in the Node.js installation directory: npm and npm.cmd. The differences are as follows: different extensions: npm is an executable file, and npm.cmd is a command window shortcut. Windows users: npm.cmd can be used from the command prompt, npm can only be run from the command line. Compatibility: npm.cmd is specific to Windows systems, npm is available cross-platform. Usage recommendations: Windows users use npm.cmd, other operating systems use npm.

Is there a big difference between nodejs and java? Is there a big difference between nodejs and java? Apr 21, 2024 am 06:12 AM

The main differences between Node.js and Java are design and features: Event-driven vs. thread-driven: Node.js is event-driven and Java is thread-driven. Single-threaded vs. multi-threaded: Node.js uses a single-threaded event loop, and Java uses a multi-threaded architecture. Runtime environment: Node.js runs on the V8 JavaScript engine, while Java runs on the JVM. Syntax: Node.js uses JavaScript syntax, while Java uses Java syntax. Purpose: Node.js is suitable for I/O-intensive tasks, while Java is suitable for large enterprise applications.

Is nodejs a back-end development language? Is nodejs a back-end development language? Apr 21, 2024 am 05:09 AM

Yes, Node.js is a backend development language. It is used for back-end development, including handling server-side business logic, managing database connections, and providing APIs.

Which one to choose between nodejs and java? Which one to choose between nodejs and java? Apr 21, 2024 am 04:40 AM

Node.js and Java each have their pros and cons in web development, and the choice depends on project requirements. Node.js excels in real-time applications, rapid development, and microservices architecture, while Java excels in enterprise-grade support, performance, and security.

See all articles