1、什么是NodeJS?
大家都知道,JavaScript是运行在浏览器上的脚本语言,简称JS,代码由浏览器解释后执行。JS不能脱离浏览器运行在服务器上,但NodeJS把JS的战场从浏览器转移到服务器,从而可以进行更多的操作,也就是说NodeJS实现了使用JS来开发后端。
JS之所以能在浏览器上运行,是因为浏览器的V8引擎可以将JavaScript代码编译成机器代码。而 Node是V8引擎的容器,可以直接运行在电脑上,所以借助于NodeJS,JS代码就可以翻译成机器语言被计算机所识别了。
借助Node运行JS代码:
Node.js官方下载地址:https://nodejs.org/en/
使用 node -v 查看版本号:
2、HTTP请求
既然NodeJS可以充当Web服务器,而Web服务器的主要任务就是处理HTTP请求,所以先来认识一下HTTP请求。HTTP请求,一般会经历以下三个步骤:
- DNS解析,建立TCP连接,然后发起HTTP请求;
例如,访问百度的时候,首先通过域名解析出远程服务器的IP地址:
之后,就会建立TCP连接,也就是三次握手,进而发起HTTP请求,图中请求方法是GET。
- 服务端接收到HTTP请求,进行处理,返回数据;
Response包含响应头,和响应的正文内容,返回给客户端:
- 客户端收到返回的数据,进行处理(例如渲染界面)。
客户端收到HTML代码后,就会进行解析,当需要一些图片、样式内容时,同样也会发起额外的请求。
3、GET请求
-
引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
-
创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
-
接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
//使用 require 指令来载入 http 模块 var http = require("http") var url_R = require("url") //使用 http.createServer() 方法创建服务器,函数通过 req, res 参数来接收和响应数据 const server = http.createServer(function(req, res){ res.setHeader('Content-Type', 'text/html;charset=utf-8') //打印请求方法 const method = req.method console.log('method:', method) //打印请求url const url = req.url console.log('url:', url) //解析URL参数 var params = url_R.parse(url, true).query res.write('网站名:' + params.name) res.write('\n') res.write('网站URL:' + params.url) //发送响应数据 res.end() }) //使用 listen 方法绑定 5000 端口 server.listen(5000,() => { console.log('server running at port 5000') })
运行:
在浏览器中访问 http://localhost:5000/user?name=菜鸟教程&url=www.runoob.com 然后查看返回结果:
4、POST请求
//使用 require 指令来载入 http 模块 var http = require("http") var url_R = require("url") var querystring = require('querystring') var postHTML = '<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' + '<body>' + '<form method="post">' + '网站名: <input name="name"><br>' + '网站 URL: <input name="url"><br>' + '<input type="submit">' + '</form>' + '</body></html>'; //使用 http.createServer() 方法创建服务器,函数通过 req, res 参数来接收和响应数据 const server = http.createServer(function(req, res){ // 定义了一个body变量,用于暂存请求体的信息 var body = ''; // 通过req的data事件监听函数,每当接受到请求体的数据,就累加到body变量中 req.on('data', function(chunk){ body += chunk; }) // 在end事件触发后,通过querystring.parse将body解析为真正的POST请求格式,然后向客户端返回。 req.on('end', function(){ //解析参数 body = querystring.parse(body); console.log('>>> body:', body) //设置响应头部信息及编码 res.setHeader('Content-Type', 'text/html;charset=utf-8') if (body.name && body.url){ //输出提交的数据 res.write('网站名:' + body.name) res.write('<br>') res.write('网站URL:' + body.url) }else{ //输出表单 res.write(postHTML) } res.end() }) }) //使用 listen 方法绑定 5000 端口 server.listen(5000,() => { console.log('server running at port 5000') })
在浏览器中访问 http://localhost:5000 查看运行结果。
参考:https://www.runoob.com/nodejs/node-js-get-post.html
标签:body,http,请求,NodeJS,认识,res,url,服务器 From: https://www.cnblogs.com/direwolf22/p/16965952.html