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.urllet 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 = 404response.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 = 405response.end('<h1>405-方法不被允许</h1>')return}let { pathname } = new URL(request.url, 'http://127.0.0.1')let filePath = __dirname + '/page' + pathnamefs.readFile(filePath, (err, data) => {if (err) {switch (err.code) {case 'ENOENT':response.statusCode = 404response.end('<h1>404 NOT FOUND</h1>')case 'EPERM':response.statusCode = 403response.end('<h1>403 无权限</h1>')default:response.statusCode = 500response.end('未知错误')}return}// response.end(data)})
})// 监听端口,启动服务
server.listen(9000, () => {console.log('服务已启动....');
})

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

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

相关文章

class076 区间dp-上【算法】

class076 区间dp-上【算法】 算法讲解076【必备】区间dp-上 code1 1312. 让字符串成为回文串的最少插入次数 // 让字符串成为回文串的最少插入次数 // 给你一个字符串 s // 每一次操作你都可以在字符串的任意位置插入任意字符 // 请你返回让s成为回文串的最少操作次数 // 测试…

深度学习 Day11——T11优化器对比实验

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;3.导入数据4.查…

单位的网络能监控微信聊天记录吗

有人在后台咨询&#xff0c;单位的网络能监控微信聊天记录吗 先来回答这个问题&#xff1a; 是的&#xff0c;公司网络在特定情况下可以监控到微信聊天记录。 1&#xff0c;公司可能会通过网络监控软件来监控员工的网络活动。比如说我们经常使用的&#xff0c;域之盾软件&…

scala表达式

1.8 表达式&#xff08;重点&#xff09; # 语句(statement)&#xff1a;一段可执行的代码# 表达式(expression)&#xff1a;一段可以被求值的代码&#xff0c;在Scala中一切都是表达式 - 表达式一般是一个语句块&#xff0c;可包含一条或者多条语句&#xff0c;多条语句使用“…

基于SSM框架的在线投票系统

基于SSM框架的在线投票系统 文章目录 基于SSM框架的在线投票系统 一.引言二.系统设计三.技术架构四.功能实现五.界面展示六.源码获取 一.引言 随着科技的不断发展&#xff0c;人们对于民主参与的需求也越来越高。在线投票系统应运而生&#xff0c;为人们提供了便捷、高效的投票…

ImmunityCanvas7.26安装详细教程

ImmunityCanvas7.26 大家想必都已经知道了Immunity Canvas7.26武器于2021年3月2日泄露了吧那我就废话不多说了。 很多人已经有了这款工具不得不说这工具很nice如果要买的话一年的话3万美金我的天我穷了。。 简单介绍 Immunity Canvas是美国ImmunitySec出品的安全漏洞检测工具…

[渗透测试学习] CozyHosting - HackTheBox

文章目录 信息搜集 信息搜集 nmap扫描一下&#xff0c;发现存在80端口和22端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.230直接访问80端口发现有跳转 那么我们将ip添加到hosts里面&#xff0c;成功访问 观察发现是企业网站&#xff0c;扫描一下没有子域名 那么就扫…

Mybatis之自定义映射resultMap

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

上海轴承展|2024年第十届SIA上海国际轴承展览会→

2024年7月24-26日&#xff0c;上海国家会展中心&#xff08;虹桥&#xff09;举办的SIA2024上海国际轴承展将与SIA上海国际智能工厂展同期举办&#xff0c;展会面积达到60,000平方米&#xff0c;1,200家企业参展&#xff0c;预计120,000万人参观。这场盛会将聚焦各系列标准轴承…

C++ 预处理详解

目录 预处理符号 #define #define定义标识符 #define定义宏 #define的替换规则 #与## 带副作用的宏参数 宏和函数的对比 undef 命令行定义 条件编译 文件包含 头文件被包含的方式 本地文件包含 库文件包含 嵌套文件包含 预处理符号 __FILE__ //进行编译的源…

Leetcode 93 复原 IP 地址

题意理解&#xff1a; 首先明确什么是正确的IP地址&#xff1a;简单理解三个小数点分割四个数字&#xff0c;每个数字的大小应在[0,255]内&#xff0c;且合法的数字表示不应该以0开头。 合法&#xff1a;0.1.2.201 不合法&#xff1a;0.01.2.257 我们需…

银行卡三要素API:保障金融安全的重要工具

引言 在互联网金融科技迅猛发展的时代&#xff0c;为了保障金融交易的安全性和准确性&#xff0c;各种身份验证技术层出不穷。其中&#xff0c;银行卡三要素API在身份验证领域发挥着重要作用。本文将详细介绍银行卡三要素API的原理、应用场景及其优势&#xff0c;以帮助读者更…