首页 > 编程语言 >【1】认识NodeJS

【1】认识NodeJS

时间:2022-12-09 10:46:50浏览次数:57  
标签:body http 请求 NodeJS 认识 res url 服务器

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请求

  1. 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。

  2. 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。

  3. 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 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

相关文章

  • Windows10 gitbook本地搭建(nodejs v10.23.0)
    1.下载Nodejs并安装,默认路径即可。(用最新的版本没成功,按照一篇博客里提示的版本nodejsv10.23.0,成功创建gitbook)https://nodejs.org/download/release/v10.23.0/node-v1......
  • ubuntu部署nodejs项目
    安装nodejsaptupdatecurl-sLhttps://deb.nodesource.com/setup_16.x|sudobash-sudoapt-yinstallnodejs aptinstall mysql-servermysql-uroot-pCR......
  • 带你三方位认识、了解TVS管!
    ​TVS其实对于我们来说,并不陌生,但你真的认识过吗?它的原理、外形、以及一些基本常识,你了解吗?其实认识、了解TVS管真的就是这几方面,下面就跟着优恩小编一起来看看吧。其一原理......
  • MAC之安装NodeJs级环境配置
    一,安装NodeJS地址: ​​http://nodejs.p2hp.com/​​最后,会给出安装的路径,如下:二,配置环境变量1,  npm-gbin  (查看npm全局包可执行文件路径)2,写入到.bash_profile文......
  • JDBC的一些基础认识,写的不是特别完善,希望大家看的时候别太介意嘿嘿嘿
    JDBC1,概念和本质JavaDataBaseConnectivityJava数据库链接,Java语言操作数据库JDBC的本质:是一套操作所有关系型数据库的规则(接口)而JDBC所有的实现类,数据库驱动jar......
  • 【C语言】* 和 & 认识、对解引用(*)认识、* & 的应用、通过指针交换变量值、指针变量
    ......
  • Maven的认识与配置
    什么是MavenMaven的含义:Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven是一个项目管理和整合工具。Maven为开发者......
  • 理解Nodejs中的进程间通信
    前置知识文件描述符在Linux系统中,一切都看成文件,当进程打开现有文件时,会返回一个文件描述符。文件描述符是操作系统为了管理已经被进程打开的文件所创建的索引,用来指......
  • 用 nodejs 搭建脚手架
    1前言1.1像我们熟悉的vue-cli,taro-cli等脚手架,只需要输入简单的命令taroinitproject,即可快速帮我们生成一个初始项目。在日常开发中,有一个脚手架工具可以用来提高......
  • 理解NodeJS多进程
    序言一次面试中,我提到自己用过pm2,面试接着问:「那你知道pm2父子进程通信方式吗」。我大概听说pm2有cluster模式,但不清楚父子进程如何通信。面试结束后把NodeJS的多进程重新......