GET/POST请求、Web模块、NPM使用介绍

本文介绍了GET/PET/POST请求的区别,重点讲解了GET和POST请求的处理方式。此外,详细阐述了Web服务器的概念,包括主流Web服务器类型。还通过实例展示了如何使用Node.js创建Web服务器和客户端。最后,对NPM进行了介绍,包括其功能、模块安装和全局/本地安装的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GET/POST请求

PET请求

获取GET请求

由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数。

node.js 中url模块中的parse 函数提供了这个功能。

实例如下:

var http = require("http")
var url = require("url")
var util = require("util")

http.createServer(function(req, res) {
    res.writeHead(200, { "Content-Type": "text/plain;charset=utf-8" })

    res.end(util.inspect(url.parse(req.url, true)))
}).listen(8888)
console.log("服务器已启动...访问:http://127.0.0.1:8888")

解析:util是node.js的常用工具模块。util.inspect()是一个将任意对象转换为字符串的方法,通常用于调试和错误输出。

POST请求

获取POST请求内容

POST请求的内容全部的都在请求体中,http.ServerRequest 并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作。

比如上传文件,而很多时候我们可能并不需要理会请求体的内容,恶意的POST请求会大大消耗服务器的资源,所以node,js,默认是不会解析请求体的,当你需要的时候,需要手动来做。

实例如下:

const http = require('http')
const querystring = require('querystring')

// 表单页面内容
var postHTML = `
    <html>
        <head><meta charset='utf=8'><title>node.js案例</title></head>
        <body>
            <form method='post'>
                姓名:<input name='name'><br>
                班级:<input name='class'><br>
                <input type='submit'>
            </form>
        </body>
    </html>
`

http.createServer(function(req, res) {
    //定义了一个body变量,用于暂存请求体的信息
    var body = ''
        //通过req的data事件监听函数,每当接受到请求体的数据,就累加到body变量中
    req.on("data", function(turck) {
            body += turck
        })
        //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回
    req.on("end", function() {
        body = querystring.parse(body)
            //设置响应头部信息及编码
        res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" })
        if (body.name && body.class) {
            //接收到POST数据,输出提交的数据
            res.write(`姓名:${body.name}`)
            res.write("<br>")
            res.write(`班级:${body.class}`)
        } else {
            //未接收到POST数据,输出表单
            res.write(postHTML)
        }
        res.end()
    })
}).listen(8888)
console.log("服务器已启动...访问:http://127.0.0.1:8888")

Web模块

什么是Web服务器?

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序。

Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。

大多数Web服务器都支持服务端的脚本语言(Java、C#、php、python)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器

目前最主流的三个Web服务器是Apache、Nginx、IlS。

Web应用架构

 

client - 客户端,一般指浏览器,浏览器可以通过HTTP协议向服务器请求数据。

Server -服务端,一般指Web服务器,可以接收客户端请求,并向客户端发送响应数据。

Business - 业务层,通过Web服务器处理应用程序,如与数据库交互,逻辑运算,调用外部程序等。

Data -数据层,一般由数据库组成。

使用Node创建Web服务器

以下是演示一个最基本的HTTP服务器架构(使用8888端口),创建server.js文件,代码如下所示:

const http = require('http')
const url = require('url')
const fs = require('fs')

// 创建服务器
http.createServer(function(request, response) {
    //解析请求,包括文件名
    let pathname = url.parse(request.url).pathname

    // //默认首页
    if (!pathname || pathname == '/') {
        pathname = '/index.html'
    }

    //从文件系统中读取请求的文件内容
    fs.readFile(pathname.substr(1), function(err, data) {
        if (err) {
            response.writeHead(404, { "Content-Type": "text/html" })
        } else {
            response.writeHead(200, { "Content-Type": "text/html" })
                // 响应文件内容
            response.write(data.toString())
        }
        // 发送响应数据
        response.end()
    })
}).listen(8888)

接下来我们在该目录下创建一个index.html文件,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h3>你好</h3>
</body>

</html>

使用Node创建Web客户端

使用node创建web客户端需要引入http模块,创建client.js文件,代码如下所示:

const http = require('http')

// 用于请求的选项
let options = {
    host: 'localhost',
    port: 8888,
    path: "/index.html"
}

// 处理相应的回调函数
function callback(res) {
    // 不断更新数据
    var body = ''
    res.on('data', function(truck) {
        body += truck
    })

    res.on('end', function() {
        // 数据接收完成
        console.log(boddy)
    })
}

// 向服务端发起请求
var req = http.request(options, callback)
req.end()

NPM使用介绍

什么是 NPM?

NPM是随同Node|S一起安装的包管理工具,能解决Node]S代码部署上的很多问题,常见的使用场景有以下几种:

允许用户从 NPM服务器下载别人编写的第三方包到本地使用。

允许用户从 NPM服务器下载并安装别人编写的命令行程序到本地使用。

允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。由于新版的NodeJS 已经集成了npm,所以之前npm 也一并安装好了。

如果你安装的是旧版本的npm,可以很容易的通过npm命令来升级,命令如下:

$ npm install npm -g

安装模块

npm安装Node.js模块语法格式如下:

$ npm insta17 <Modu1e Name>

以下实例,我们使用npm命令安装常用的Node.js web框架模块express:

$ npm insta17 express

安装好之后,express 包就放在了工程目录下的node_modules目录中,因此在代码中只需要通过 require('express')的方式就好,无需指定第三方包路径。

var express = require('express');

以上命令默认下载最新版模块,如果想要下载指定版本的话,可以在模块名后边加上@<version>,例如通过以下命令可下载4.17.1版的express:

$ npm install express@4.17.1

注意:当我们通过npm安装模块的时候,有时候模块和当前webpack版本有冲突,就需要安装指定版本的模块。

通过以下命令,可以查看express模块的所有版本:

$npm view express versions

全局安装与本地安装

npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如:

$ npm insta17 express       #本地安装
$ npm insta17 express -g    #全局安装

如果出现以下错误:

npm err! Error : connect ECONNREFUSED 127.0.0.1:8087

解决办法为:

$ npm config set proxy null

本地安装

安装包存放在./node_modules下(运行npm命令时所在的目录)。如果没有node_modules目录,会在当前执行npm 命令的目录下生成node_modules目录。

·可以通过require()来引入本地安装的包。

全局安装

安装包存放在node的安装目录下。

可以直接在命令行里使用。

注意:如果你希望具备两者功能,则需要在两个地方安装它或使用npm link

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值