Node.js基础---http模块

概念

http模块是 Node.js 官网提供用来创建 web服务器 的模块,通过 http.createServer()创建

服务器和普通电脑区别:服务器有web服务器软件,IIS,Apache,phpstudy  在node内不需要

使用

先导入

const http = require("http")

创建最基本web服务器

基本步骤

        1. 导入 http 模块

const http = require("http")

        2. 创建 web 服务器实例

        调用 http.createServer() 方法,快速创建一个web服务器实例

const server = http.createServer()

        3. 为服务器实例绑定 request 事件,监听客户端的请求

// 使用服务器实例的 .on() 方法 为服务器绑定一个 request 事件
server.on('request', (req, res) => {// 只要有客户端来请求我们自己的服务器,就会触发 request 事件,从而调用这个事件处理函数console.log('触发事件,调用函数')
})

        4. 启动服务器

        调用服务器实例的 .listen()  方法   启动当前的web服务器实例

// 调用 server.listen(端口号, cb回调) 方法,启动web服务器
server.lister(80, () => {console.log('启动服务器')
}) 

req请求对象

只要服务器接收到客户端的请求,就会调用绑定的  request事件处理函数 

如果想访问与客户端相关的数据或属性,可以使用如下方法

server.on('request',(req) => {// req 是请求对象,包含了与客户端相关的数据和属性.例如:// req.url 是客户端请求的 URL 地址// req.method 是客户端 method 请求类型console.log(req,req.url,req.method)
})

res响应对象

在 服务器的时间处理函数中,如果想访问与服务器相关的数据或属性,可以用: 

server.on('request',(req,res) => {// res 是响应对象,包含了与服务器相关的数据和属性.例如:// 要发送到客户端的字符串const str = `${req.url} , ${req.method}` // res.end() 方法的作用// 向客户端发送指定内容,并结束这次请求的处理过程res.end(str)
})

解决中文乱码问题

server.on('request',(req,res) => {// 发送内容包含中文const str = `请求地址:${req.url} ,请求类型: ${req.method}` // 防止中文乱码,需要设置响应头    res.setHeader('Content-Type','text/html; charset=utf-8') // 向客户端发送指定内容,并结束这次请求的处理过程res.end(str)
})

根据不同url响应不同内容

实现步骤

        1. 获取请求的 url 地址

        2. 设置默认的响应内容为 404 Not found

        3. 判断用户请求的是否为 / 或 /index.html

        4. 判断是否为 /about.html

        5. 设置 Content-Type 响应头,防止。中文乱码

        6. 使用res.set() 把内容响应给客户端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

致专升本的大家

亲爱的专升本学员 在你踏上专升本的征程之际,我想告诉你,这是一段充满挑战但也充满希望的旅程。在这个过程中,你将会面临各种困难和压力,但请记住,每一次的努力都是为了迈向更好的未来。 首先,要明白一点…

LeetCode69. x 的平方根(C++)

LeetCode69. x 的平方根 题目链接代码 题目链接 https://leetcode.cn/problems/sqrtx/description/ 代码 class Solution { public:int mySqrt(int x) {int right x, left 0, ans -1;while(left < right){long long mid left (right - left) / 2;if(mid * mid <…

openssl3.2 - crypto-mdebug被弃用后, 内存泄漏检查的替代方法

文章目录 openssl3.2 - crypto-mdebug被弃用后, 内存泄漏检查的替代方法概述笔记查看特性列表openssl3.2编译脚本 - 加入enable-crypto-mdebug看看有没有替代内存诊断的方法?main.cppmy_openSSL_lib.hmy_openSSL_lib.c备注备注这招不行啊显势调用默认上下文也不行END openssl3…

Laravel03 路由到控制器与连接数据库

Laravel03 路由到控制器与连接数据库 1. 路由到控制器2. 连接数据库 1. 路由到控制器 如下图一些简单的逻辑处理可以放在web.php中&#xff0c;也就是路由的闭包函数里面。但是大的项目&#xff0c;我们肯定不能这么写。 为什么保证业务清晰好管理&#xff0c;都应该吧业务逻辑…

Amazon Generative AI | 基于 Amazon 扩散模型原理的代码实践之采样篇

以前通过论文介绍 Amazon 生成式 AI 和大语言模型&#xff08;LLMs&#xff09;的主要原理之外&#xff0c;在代码实践环节主要还是局限于是引入预训练模型、在预训练模型基础上做微调、使用 API 等等。很多开发人员觉得还不过瘾&#xff0c;希望内容可以更加深入。因此&#x…

python 进程笔记二(通讯) (概念+示例代码)

1、为什么要掌握进程间通信 Python代码效率由于受制于GIL全局锁限制&#xff0c;多线程不能利用多核CPU来加速&#xff0c;而多进程方式却可以绕过GIL限制, 发挥多CPU加速的优势&#xff0c;达到提高程序的性能的目的。 然而进程间通信却是不得不考虑的问题。 进程不同于线程&a…

react useMemo 用法

1&#xff0c;useCallback 的功能完全可以由 useMemo 所取代&#xff0c;如果你想通过使用 useMemo 返回一个记忆函数也是完全可以的。 usecallback(fn,inputs)is equivalent to useMemo(()> fn, inputs). 区别是:useCallback不会执行第一个参数函数&#xff0c;而是将它返…

Java Swing游戏开发学习2

跟随大佬教程继续&#xff0c;图片资源&#xff0c;视频简介有下载链接。 这个文章是看视频教程写的&#xff0c;不算原创。有条件的可以去油管搜索RyiSnow&#xff0c;是一个游戏开发视频制作up主&#xff0c;讲解的非常基础&#xff0c;可以边看边实践&#xff0c;增加对Java…

JavaWeb个人学习

1:RequestParam(defaultValue "默认的值") 这个可以在一个参数的前面写上 要是前端不传值进来的话 这个形参就是你定义的默认值 2: slf4j 对应的是日志的输出 log.info("参数是 {}", detail); 3: 分页插件 PageHelper 用法: 准备工作: 引入依赖 …

数据结构:链栈

一、介绍 操作受限的链表 如果进行头插&#xff0c;就只能头删 如果进行尾插&#xff0c;就只能进行尾删 二、功能&#xff08;把T->ptop当做头节点用&#xff09; 链栈的结构体 #ifndef __LINK_STACK_H__ #define __LINK_STACK_H__ #include <stdio.h> #include…

【MySQL】学习和总结联合查询

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OPj5g6evbkm5ol0U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

向导式堆栈管理器Dockge

经过申诉&#xff0c;目前博客的几个域名都恢复了&#xff0c;时间也延长到了 2033 年&#xff0c;后面还会不会出问题&#xff0c;老苏就不知道了 什么是 Dockge ? Dockge 是一款时髦的、易于使用的、响应式的、自托管的 docker-compose.yaml 向导式堆栈管理器&#xff0c;可…

单目与双目相机标定(一)

下面是几种常见的方法来获得三维点云重建的坐标系&#xff1a; 外部标定方法&#xff1a;在采集点云数据之前&#xff0c;通过使用已知尺寸和形状的校准物体在场景中放置特定的标记点或标定板。通过捕捉这些已知的标记点&#xff0c;可以建立一个参考坐标系&#xff0c;所有的点…

【Java程序设计】【C00317】基于Springboot的智慧社区居家养老健康管理系统(有论文)

基于Springboot的智慧社区居家养老健康管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的智慧社区居家养老健康管理系统设计与实现&#xff0c;本系统有管理员、社区工作人员、医生以及家属四种角色权限 管…

Atcoder ABC341 D - Only one of two

Only one of two&#xff08;只有两个中的一个&#xff09; 时间限制&#xff1a;2s 内存限制&#xff1a;1024MB 【原题地址】 所有图片源自Atcoder&#xff0c;题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 …

C语言--- 操作符详解(上)

目录 一.操作符的分类 1.算术操作符&#xff1a; - * / % 1. 和 - 2. * 3./ 4.% 2.移位操作符 3.位操作符 4.赋值操作符 1.连续赋值 2.复合赋值 5.单目操作符 1.和-- &#xff08;1&#xff09;前置 &#xff08;2&#xff09;后置 &#xff08;3&#xff09;前置…

用html编写的简易新闻页面

用html编写的简易新闻页面 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

【MySQL】表的约束 -- 详解

表中一定要有各种约束&#xff0c;通过约束让我们在未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段倒逼程序员插入正确的数据&#xff0c;反过来站在 MySQL 的角度&#xff0c;凡是插入进来的数据都是符合数据约束的。约束的最终目标&#xff1a;保证数据的完整…

javaApI(Application Programming Interface)应用程序编程接口

ApI概念 Apl:指的是官方给开发人员提供的说明文档&#xff0c;对语言中有哪些类&#xff0c;类中有哪些方法进行说明 Objict 类 java.lang.Object 是java类体系结构中最顶层的类 Object可以表示java中任意的类 Object类中的方法 toString() 输出一个对象&#xff0c;但是…

在Ubuntu系统下搭建TDengine集群

目录 一、Ubuntu虚拟机创建 二、系统相关配置 1、设置系统hostname 2、网络配置及IP规划 3、配置FQDN&#xff08;etc/hosts&#xff09; 4、服务端口设置 三、TDengine server安装 1、服务安装 2、修改配置 3、启动taosd 4、服务卸载 四、客户端安装 1、client安…