nodejs入门:常用模块汇总之http模块(代码片段)

安之ccy 安之ccy     2022-11-30     432

关键词:

http模块是nodejs中非常重要的模块,本文从3个demo入手,入门学习http模块

简单demo

主要步骤:

  • 引入http模块
  • 创建服务器
  • 服务器监听某指定端口
  • 给出响应
  • 结束响应

代码:

// 引入模块
const http = require("http");

// 创建服务器
http.createServer((req,res)=>
    console.log(req.url);
    // 响应
    res.write("hello world!");
    // 结束响应
    res.end();
).listen(5000,()=>console.log("服务器已运行..."))
// 监听5000端口

效果:

  1. 运行项目,控制台打印出:“服务器已运行…”
  2. 到浏览器打开localhost:5000,可以看到页面上显示的"hello world!"

  1. 打印出req.url : '/'和页面标题默认图标favicon.ico路径

接收html文件、json数据的demo

文件解释:

  • index.html:主页面
  • about.html:"关于我们"页面
  • index.js:服务器配置和响应设置

代码:
index.html

 <h1>欢迎来到我的主页</h1>

about.html:

<h1>欢迎来到关于我们的页面</h1>

简单功能测试

index.js:

  • 创建服务器对象、设置端口、服务器响应后返回一个html标签,让页面显示"good morning"
// 引入需要的模块
const path = require("path");
const http = require("http");
const fs = require("fs");
// 创建变量存储服务器对象
const server = http.createServer((req,res)=>
    console.log(req.url);
    // 结束响应,返回响应的数据
    res.end("<h1>good morning</h1>")
)
// 定义监听端口
// 如果环境变量中有定义端口,则使用环境变量中的端口,如果没有,就使用9999端口
const port = process.env.PROT || 9999;
// 监听
server.listen(port,()=>
    console.log(`服务器的$port端口正在运行...`)
)

运行效果:
项目启动,控制台打印"服务器的9999端口正在运行…"
在浏览器打开localhost:9999,页面显示

good morning

加载html文件

简单的功能测试完毕,现在加入"加载index.html"的响应:

// 加载index页面
if (req.url === '/')
    fs.readFile(path.join(__dirname,"public","index.html"),(err,data)=>
        if (err) throw err;
        res.writeHead(200, 'Content-Type':"text/html")
        res.end(data);
    )

效果:
浏览器访问localhost:9999,加载index.html页面,显示如下:


接着是about.html页面的加载:

// 加载about页面
if (req.url === '/about')
    fs.readFile(path.join(__dirname,"public","about.html"),(err,data)=>
        if (err) throw err;
        res.writeHead(200, 'Content-Type':"text/html")
        res.end(data);
    )

效果:
浏览器访问localhost:9999/about,加载about.html页面,显示如下:


加载json数据

然后是json数据的读取:

if (req.url = "/api/user") 
    const data = [
        
            name: "ccy",
            age: 25
        ,
        
            name: "ccy1",
            age: 25
        
    ];
    res.writeHead(200,  'Content-Type': "application/json" )
    res.end(JSON.stringify(data));

效果:
浏览器访问localhost:9999/api/user,加载该json数据,显示为:


index.js完整代码:

// 引入需要的模块
const path = require("path");
const http = require("http");
const fs = require("fs");
// 创建变量存储服务器对象
const server = http.createServer((req,res)=>
	// 加载index页面
	if (req.url === '/')
	    fs.readFile(path.join(__dirname,"public","index.html"),(err,data)=>
	        if (err) throw err;
	        res.writeHead(200, 'Content-Type':"text/html")
	        res.end(data);
	    )
	
	// 加载about页面
	if (req.url === '/about')
	    fs.readFile(path.join(__dirname,"public","about.html"),(err,data)=>
	        if (err) throw err;
	        res.writeHead(200, 'Content-Type':"text/html")
	        res.end(data);
	    )
	
	// 加载json数据
	if (req.url = "/api/user") 
	    const data = [
	        
	            name: "ccy",
	            age: 25
	        ,
	        
	            name: "ccy1",
	            age: 25
	        
	    ];
	    res.writeHead(200,  'Content-Type': "application/json" )
	    res.end(JSON.stringify(data));
	
	
)
// 定义监听端口
// 如果环境变量中有定义端口,则使用环境变量中的端口,如果没有,就使用9999端口
const port = process.env.PROT || 9999;
// 监听
server.listen(port,()=>
    console.log(`服务器的$port端口正在运行...`)
)

根据文件后缀名加载

如果文件找不到,就显示404,因此我们加一个404的html:
404.html

<h1>404 NOT FOUND</h1>

在前一个例子的基础上加上文件后缀名的判断,此处用switch来做判断

不同类型的文件对应的content-type都不同,此处仅列举几个类型,如:

文件类型content-type
‘.js’text/javascript
‘.css’text/css
‘.json’application/json
‘.png’image/png
‘.jpg’image/jpg
// 动态加载
// 创建变量存储文件路径
let filePath = path.join(__dirname, "public", req.url === '/' ? "index.html" : req.url);

// 初始化content-type
let contentType = "text/html";
// 文件扩展名
let extName = path.extname(filePath);
// 通过验证拓展名,设置contentType
switch (extName)
    case ".js":
        contentType = 'text/javascript';
        break;
    case ".css":
        contentType = 'text/css';
        break;
    case '.json':
        contentType = 'application/json';
        break;
    case '.png':
        contentType = 'image/png';
        break;
    case '.jpg':
        contentType = 'image/jpg';
        break;

// 读取文件
fs.readFile(filePath,(err,data)=>
    if (err) 
        if(err.code === 'ENOENT')
            // 没有找到页面,就加载404.html
            fs.readFile(path.join(__dirname,"public","404.html"),(err,data)=>
                if (err) throw err;
                res.writeHead(200, 'Content-type':"text/html");
                res.end(data,"utf8")
            )
        else
            // 其他服务器错误
            res.writeHead(500);
            res.end(`服务器错误:$err.code`);
        
    else
        // 文件读取成功
        res.writeHead(200, 'Content-type':contentType);
        res.end(data, 'utf8');
    
)

效果:
在浏览器访问localhost:9999/index.html,加载index.html文件,显示如下:

在浏览器访问localhost:9999/about.html,加载about.html文件,显示如下:

在浏览器访问localhost:9999/404.html,加载404.html文件,显示如下:



如果文件名输入错误,也会加载404.html文件
由于是根据后缀名来判断和加载文件的,因此访问时需要输入后缀名

切记要结束响应,将数据返回给客户端

nodejs之url模块(代码片段)

  鄙人初步学习nodejs,目前在读《nodejs入门》这一本书,书很小,但是让我知道了如何用nodejs创建一个简单的小项目。例如如何创建一个服务器啦,例如http.createServer,还有根据不同的请求路径来设置路由选择啦,模块引入,创... 查看详情

python3入门(十三)——常用内置模块之时间日期模块datatime(代码片段)

1.日期时间模块——datatime  //其他模块例如time、calender等模块暂不展开(1)获取当前时间:datatime.now(): fromdatetimeimportdatetimenow=datetime.now()print(now) 结果:2019-06-0920:58:13.533006//如果仅仅使用import,则需要加全限 查看详情

nodejs之url模块

  鄙人初步学习nodejs,目前在读《nodejs入门》这一本书,书很小,但是让我知道了如何用nodejs创建一个简单的小项目。例如如何创建一个服务器啦,例如http.createServer,还有根据不同的请求路径来设置路由选择啦,模块引入,创... 查看详情

带你入门nodejs第二天——http模块化npmyarm(代码片段)

带你入门nodejs第一天——node基础语法及使用带你入门nodejs第二天——http模块化npmyarm带你入门nodejs第三天—express路由带你学习nodejs第四天——身份认证及缓存1.表单处理表单(form):表单用于收集用户输入信息,... 查看详情

nodejs之http模块学习

nodejs中的http模块封装了一个http服务器模块和一个简易的http客户端。http.Server是一个基于事件的http服务器http.request是http客户端工具,用于向http服务器发起请求 而http.createServer方法中的函数参数req和res分别代表请求对象和响... 查看详情

xilinx常用模块汇总(verilog)04

...链接:http://www.cnblogs.com/xingshansi/p/9040472.html 前言Xilinx常用模块汇总(verilog)【01】Xilinx常用模块汇总(verilog)【02】Xilinx常用模块汇总(verilog)【03】本文侧重FPGA中矩阵的基本运算、以及自适应信号处理的基 查看详情

nodejs之http模块详解(代码片段)

一、Web服务器什么是Web服务器?当应用程序(客户端)需要某一个资源时,可以向一个台服务器,通过Http请求获取到这个资源;提供资源的这个服务器,就是一个Web服务器;目前有很多开源的Web服... 查看详情

nodejs常用模块介绍

收集了NodeJS开发中常用的一些模块。MVC框架-ExpressExpress是轻量灵活的NodejsWeb应用框架,它可以快速地搭建网站。Express框架建立在Nodejs内置的Http模块上,并对Http模块再包装,从而实际Web请求处理的功能。它支持多种前端模板,如... 查看详情

nodejs模块之http&&url

我们使用nodejs中的http模块来进行网络操作一、什么是HTTP协议:超文本传输协议(HyperTextTransferProtocol)HTTP假定其下层协议提供可靠传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是使用TCP作为其传输层。... 查看详情

nodejs之事件events

前面的话  events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http、fs等。本文将详细介绍nodeJS中的事件机制 EventEmitter  多数Node.js核心API都是采用惯用的异步事件驱动架构,其中某些类型的对象... 查看详情

带你入门nodejs第二天——http模块化npmyarm(代码片段)

带你入门nodejs第一天——node基础语法及使用带你入门nodejs第二天——http模块化npmyarm带你入门nodejs第三天—express路由带你学习nodejs第四天——身份认证及缓存1.表单处理表单(form):表单用于收集用户输入信息,... 查看详情

xilinx常用模块汇总(verilog)

...2.html 前言该文私用,不定期更新,主要汇总记录Xilinx常用的基本模块,列出清单,方便查阅。 adder_3op路径:印象笔记-1/0019/001描述:三个数加、减混合运算rtldelay路径:印象笔记- 查看详情

nodejs之http核心模块构建简单服务器(代码片段)

nodejs之HTTP核心模块在vscod中打开js文件,右键js文件,在集成终端中打开。//1.加载http核心模块varhttp=require('http');//2.使用http.createServer()创建一个web服务器varserver=http.createServer();//3.服务器要做的事儿//提供服务&#... 查看详情

python中常用的内置模块(代码片段)

文章目录1.time模块(1)功能汇总(2)程序解释2.datetime模块(1)功能汇总(2)程序解释3.calendar模块(1)功能汇总(2)程序解释4.sys模块(1)功能汇总(2& 查看详情

nodejs之querystring模块

这里主要记下querystring模块的使用方法。querystring从字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析。querystring模块只提供4个方法,在我看来,这4个方法是相对应的。这4个方法分别是querystring.parse和querystring.... 查看详情

react常用模块介绍

react各个模块:1、node.js自带的模块(原生模块):https://www.jianshu.com/p/abc72267abfc原生模块的api文档地址:http://nodejs.cn/api/怎么判断引用的模块是核心模块(自带)还是文件模块(npm另安装)?node内核是提供了判断的方法的,比如你... 查看详情

常用模块汇总

汇总目录 基础模块logging,json,pickle,ostime,datatime,random,shutilshelve,xml,rehashlib,subprocess,configparserstruct 网络编程模块socket 线程和进程进程(系统):multiprocessing,线程(系统):threading协程(第三方):gevent=... 查看详情

nodejs学习笔记之net模块

参考技术A一,开篇分析从今天开始,我们来深入具体的模块学习,这篇文章是这个系列文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中,对NodeJS也有一个基本的认识,没事!!!趁热打铁,让我们继续将No... 查看详情