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);
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);
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
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 等待连接的超时时间
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();
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 requestsThe cluster module in Node LearningThe 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!

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver CS6
Visual web development tools

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment