Http模块

Http模块

1.创建http服务

//导入http模块
const http = require('http')

//创建服务对象
const server = http.createServer((request,response)=>{
    response.end('Hello HTTP Server')
})

// 监听端口,启动服务
server.listen(9000,()=>{
    console.log('服务已启动....');
})
//node 文件名.js启动服务

浏览器中输入http://127.0.0.1:9000 得到响应’Hello HTTP Server’,如下图:
在这里插入图片描述

2.注意事项

  • 中文乱码问题
const server = http.createServer((request,response)=>{
    // response.end('Hello HTTP Server')
    response.setHeader('content-type','text/html;charset=utf-8')
    response.end('你好呀!')//不加请求头会中文乱码,加上setHeader后能正常显示中文
})
  • http协议的默认端口
    http默认为80;https默认为443

3.抽取http报文以及请求体

//导入http模块
const http = require('http')

//创建服务对象
const server = http.createServer((request,response)=>{
	//请求报文
    //console.log(request.method);
    //console.log(request.url);
    //console.log(request.httpVersion);
    //console.log(request.headers);
    //response.end('Hello HTTP Server')
    
	//请求体
	let body = ''
    request.on('data', chunk => {
        body += chunk
    })
    request.on('end',()=>{
        console.log(body);
        response.end('Hello HTTP')
    })
})

// 监听端口,启动服务
server.listen(9000,()=>{
    console.log('服务已启动....');
})
//node 文件名.js启动后,浏览器中输入http://127.0.0.1:9000/访问,可在vscode终端看到打印结果

4.提取http报文中的url路径和查询字符串

//导入http模块
const http = require('http')
const url = require('url')
//创建服务对象
const server = http.createServer((request,response)=>{
    // 方式1:
    // 解析request.url
    let res = url.parse(request.url,true)
    console.log('res--->',res);

    // 方式2
    // let url2 = new URL('search?keyword=5','http://127.0.0.1:9000')
    let url2 = new URL(request.url,'http://127.0.0.1:9000')
    console.log('url--->',url2);
    // 输出keyword查询字符串
    console.log(url2.searchParams.get('keyword'));

    response.end('Hello HTTP URL')
})

// 监听端口,启动服务
server.listen(9000,()=>{
    console.log('服务已启动....');
})

5.http设置响应

//导入http模块
const http = require('http')

//创建服务对象
const server = http.createServer((request,response)=>{
    //设置响应状态码及响应状态描述
    response.statusCode = 404
    response.statusMessage = 'NOT F'
    // 设置响应头
    response.setHeader('content-type','text/html;charset=utf-8')
    response.setHeader('Server','Node.js')
    response.setHeader('myHeader','test tets')
    response.setHeader('test',['a','b','c'])//设置多个同名响应头
    // 设置响应体
    response.write('hi hi hi')
    response.end()
})

// 监听端口,启动服务
server.listen(9000,()=>{
    console.log('服务已启动....');
})

6.设置资源类型(mime类型)

媒体类型(通常为Multipurpose Internet Mail Extensions 或MIME类型),用来表示文档、文件或字节流的性质和格式。
例如:

//charset=utf-8 可防止中文乱码问题
  response.setHeader('content-type','text/html;charset=utf-8')

7.设置不同错误码

//导入http模块
const http = require('http')
const fs = require('fs')
//创建服务对象
const server = http.createServer((request, response) => {
    response.setHeader('content-type','text/html;charset=utf-8')
    if (request.method !== 'GET') {
        response.statusCode = 405
        response.end('<h1>405-方法不被允许</h1>')
        return
    }
    let { pathname } = new URL(request.url, 'http://127.0.0.1')
    let filePath = __dirname + '/page' + pathname
    fs.readFile(filePath, (err, data) => {
        if (err) {
            switch (err.code) {
                case 'ENOENT':
                    response.statusCode = 404
                    response.end('<h1>404 NOT FOUND</h1>')
                case 'EPERM':
                    response.statusCode = 403
                    response.end('<h1>403 无权限</h1>')
                default:
                    response.statusCode = 500
                    response.end('未知错误')
            }
            return
        }
        // response.end(data)
    })
})

// 监听端口,启动服务
server.listen(9000, () => {
    console.log('服务已启动....');
})

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Jeecg Boot 3 - 第二天】2.1、nginx 部署 JEECGBOOT VUE3

一、场景 二、实战 ▶ 2.1、打包&#xff08;build 前端&#xff09; &#xff1e; Stage 1&#xff1a;修改配置文件 .env.production&#xff08;作用&#xff1a;指向后端接口地址&#xff09; &#xff1e; Stage 2&#xff1a;点击build&#xff08;作用&#xff1…

智能优化算法应用:基于蝙蝠算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蝙蝠算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蝙蝠算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝙蝠算法4.实验参数设定5.算法结果6.参考文献7.MA…

HeartBeat监控Redis状态

目录 一、概述 二、 安装部署 三、配置 四、启动服务 五、查看数据 一、概述 使用heartbeat可以实现在kibana界面对redis服务存活状态进行观察&#xff0c;如有必要&#xff0c;也可在服务宕机后立即向相关人员发送邮件通知 二、 安装部署 参照文章&#xff1a;HeartBeat监…

「差生文具多系列」推荐两个好看的 Redis 客户端

&#x1f4e2; 声明&#xff1a; &#x1f344; 大家好&#xff0c;我是风筝 &#x1f30d; 作者主页&#xff1a;【古时的风筝CSDN主页】。 ⚠️ 本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正&#xff0c;不胜感激。 直达博主&#xff1a;「…

前端 三种解决跨域问题 jsonp 、CORS、代理服务器 解决跨域全家桶

我的报错情况是 后端接口是3000 前端本地接口是8080&#xff0c;最后出现跨域 1.什么是跨域&#xff1f; 首先跨域是一种安全机制&#xff0c;是在开发上线前考虑到的安全问题并且需要采取合适的手段去避免这个问题带来的程序错误,接口跨域可以后端处理,也可以前端处理&#x…

Appium微信小程序自动化环境准备

一、前置说明 微信从8.0.19开始内核从x5换成xweb之后&#xff0c;原先的开启webview调试的原方案已经会报503错误。 点击下面的链接&#xff0c;都会报503错误&#xff1a; http://debugmm.qq.com/?forcex5ture http://debugx5.qq.com 微信内核升级为xweb之后&#xff0c;需要…

LeetCode力扣每日一题(Java):58、最后一个单词的长度

一、题目 二、解题思路 1、我的思路 先将字符串转换成字符数组 由于我们需要获取最后一个单词的长度&#xff0c;所以我们从后往前遍历字符数组 我们还需判断所遍历的字符是不是字母&#xff0c;即判断每个字符对应的ASCII值即可&#xff0c;用计数器count来储存单词长度 …

小型洗衣机哪个牌子质量好?迷你洗衣机排名前十名

随着内衣洗衣机的流行&#xff0c;很多小伙伴在纠结该不该入手一款内衣洗衣机&#xff0c;专门来洗一些贴身衣物&#xff0c;答案是非常有必要的&#xff0c;因为我们现在市面上的大型洗衣机只能做清洁&#xff0c;无法对我们的贴身衣物进行一个高强度的清洁&#xff0c;而小小…

Unity优化——加速物理引擎1

大家好&#xff0c;这里是七七&#xff0c;今天开始更新物理引擎相关的优化部分了&#xff0c;本文介绍的是物理引擎内部工作情况。 Unity技术有两种不同的物理引擎&#xff1a;用于3D物理的Nvidia的PhysX和用于2D物理的开源项目Box2D。然而&#xff0c;Unity对它们的实现是高…

和鲸科技携手深圳数据交易所,“数据+数据开发者生态”赋能人工智能产业发展

信息化时代&#xff0c;数据驱动决策的重要性日益凸显。通过利用数据可以深入了解市场需求、客户行为、竞争态势等关键信息&#xff0c;从而制定更为有效的战略和决策。围绕推动数据要素产业发展&#xff0c;近日&#xff0c;深圳数据交易所&#xff08;以下简称“深数所”&…

MySQL InnoDB Replication部署方案与实践

1. 概述 MySQL Innodb ReplicaSet 是 MySQL 团队在 2020 年推出的一款产品&#xff0c;用来帮助用户快速部署和管理主从复制&#xff0c;在数据库层仍然使用的是主从复制技术。 ReplicaSet 主要包含三个组件&#xff1a;MySQL Router、MySQL Server 以及 MySQL Shell 高级客户…

在线课堂知识付费小程序源码系统 开发组合PHP+MySQL:用手机随时随地地学习,讲师亲自在线授业解惑 带安装部署教程

近年来&#xff0c;人们对于学习的需求也日益增加。传统的课堂教学已经无法满足人们的学习需求&#xff0c;而在线课堂则能够让人们随时随地地进行学习。同时&#xff0c;随着知识付费的兴起&#xff0c;越来越多的讲师也愿意将自己的知识和经验分享给更多的人。因此&#xff0…

温湿度传感器DHT11的简单应用

文章目录 一、DHT11是什么&#xff1f;二、使用步骤1.硬件1.硬件连接2.工作原理1.串行单总线2.温湿度数据采集原理 2.软件1.DHT11初始化如下&#xff08;示例&#xff09;&#xff1a;2.DHT11复位如下&#xff08;示例&#xff09;&#xff1a;3.等待DHT11的回应如下&#xff0…

@Transactional失效问题

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 关于Transactional 日…

酷开科技多维度赋能营销,实力斩获三项大奖

在数智化新阶段、广告新生态、传播新业态的背景下&#xff0c;“第30届中国国际广告节广告主盛典暨网易传媒态度营销峰会”于11月18日在厦门国际会展中心盛大举行。来自全国的品牌方、战略决策者、媒体平台和品牌服务机构等汇聚一堂。在50000&#xff0b;现场观众和数千万线上观…

SSL证书HTTPS保护服务

SSL证书属于数字证书的其中一种&#xff0c;广泛用于https协议&#xff0c;从而可以让数据传输在加密前提下完成&#xff0c;确保HTTPS网络安全是申请SSL证书必要工作。 SSL证书是主要用于https是一种加密协议&#xff0c;仔细观察网站地址会发现目前主流的网址前面都会有http…

Linux操作系统学习(零)、计算机概论

计算机概论 指令集 CPU中含有多种指令集&#xff0c;指令集对于CPU运算具有指导和优化的硬程序&#xff0c;用来引导CPU进行加减运算和控制计算机操作系统的一系列指令的集合 常见的就有微指令集RISC和复杂指令集CISC RISC&#xff1a;包括ARM架构和PPC架构 CISC&#xff…

HTML面试题---专题四

文章目录 一、前言二、如何在 HTML 中嵌入音频文件&#xff1f;三、解释 <script> 标签中 defer 属性的用途。四、如何在 HTML 中创建粘性/固定导航栏&#xff1f;五、HTML 中的 span 元素的用途是什么&#xff1f;六、如何使 HTML 元素可拖动&#xff1f;七、解释 <i…

项目中使用Arrays.asList、ArrayList.subList的坑

使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用&#xff1a; List<Integer> statusList Arrays.asList(1, 2); System.out.println(statusList); System.out.println(statusList.contains(1)); System.out.println(statusList.contains(3)…

如何打造稳健高效的数据库的基础设施?数据库云提出创新方案

引言 数据库的云化、丰富业务场景下多元的数据库类型、公有云与私有云交织的IT架构&#xff0c;叠加信创影响使得企业内部的基础设施日益复杂&#xff0c;如何高效管理多元的数据库和多云异构基础设施正成为企业面临的严峻挑战。 在此背景下&#xff0c;数据库云应运而生。数…