从0到1学习node.js(http模块)

一、使用node.js构建后台服务
1、使用node.js创建一个HTTP服务
javascript 复制代码
// 1.导入 http模块
const http = require('http')

// 2.创建服务对象 两个参数,第一个请求体,第二个响应体
const server = http.createServer((request, response) => {
    response.end('Hello HTTP server') // 响应并结束
})

// 监听端口
server.listen(9000, () => {
    console.log('服务启动成功...')
})
2、服务中提取HTTP请求报文
含义 语法
请求方法 request.method
请求版本 request.httpVersion
请求路径 request.url
请求头 request.headers
请求体
javascript 复制代码
// 1.导入 http模块
const http = require('http')

// 2.创建服务对象 两个参数,第一个请求体,第二个相应体
const server = http.createServer((request, response) => {
    // 获取请求的方法
    console.log(request.method)
    // 获取请求的url
    console.log(request.url) // 只包含路径和字符串
    // 获取HTTP协议版本号
    console.log(request.httpVersion)
    // 获取请求头
    console.log(request.headers)
    response.end(request.method)
})

// 监听端口
server.listen(9000, () =>{
    console.log('服务启动成功..')
})
3、设置HTTP响应报文
javascript 复制代码
response.statusCode = 200 // 设置返回状态码
response.statusMessage = '123' // 设置返回消息体 几乎不用
response.setHeader('content-type','text/html;charset=utf-8')// 设置MIME类型
response.end() // 返回响应体,有切只有一个!必须有一个
4、一个小练习,返回一个html文件
javascript 复制代码
const http = require('http')
const fs = require('fs')

const server = http.createServer((request, response) => {
    response.setHeader('content-type', 'text/html;charset=utf-8')
    fs.readFile(__dirname + '/index.html', (err, data) => {
        if (err) {
            console.log('读取失败')
            return
        }
        response.end(data)
    })
})

server.listen(9000, () => {
    console.log('服务器启动完毕...')
})
5、设置响应资源的MIME类型
javascript 复制代码
常见的文件对应的mime类型
html:'text/html'
js:'text/javaScript'
css:'text/css'
png:'image/png'
jpg:'image/jpg'
gif:'image/gif'
mp4:'video/mp'
mp3:'audio/mpeg'
json:'application/json'
如果都不是,就返回application/octet-stream 类型
浏览器在遇到该类型的时候会对响应体内容进行独立存储,也就是我们常见的下载效果
6、绝对路径
路径 用法
http://www.baidu.com/aaa 完整路径
//www.baidu.com/aaa 省略协议
/aaa 全部省略就会默认自动的使用当前项目的路径
7、相对路径

相对路径在发送请求时,需要与当前页面的URL路径进行计算,得到完整URL后再发送请求, 例如当前的路径是https://www.baidu.com/sourse/index.html

形式 最终的URL
./css/app.css https://www.baidu.com/sourse/css/app.css 当前目录
js/app.js https://www.baidu.com/sourse/js/app.js 当前目录
.../img/logo.png https://www.baidu.com/img/logo.png 上一级目录
.../.../mp4/show.mp4 https://www.baidu.com/mp4/show.mp4 上一级目录的上一级,但是现在只有一层,所以就是上一级目录。
相关推荐
濮水大叔4 小时前
Cabloy/Vona 为什么不需要 NestJS 的 Dynamic Module
typescript·node.js·nestjs
Rabitebla4 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件5 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
一个天蝎座 白勺 程序猿5 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
楚山之石6 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
匠云创新6 小时前
读完一万段要两分钟:我们把标书读取从 WPS 对象模型搬到了 docx 解析
性能优化·node.js
坤坤子吖9 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
如夏倾城12 小时前
QUIC——HTTP/3 的唯一底层传输协议 及 0-RTT恢复
网络·网络协议·tcp/ip·安全·http
LGL6030A13 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习
阿达和自己14 小时前
springboot学习-springboot引入MyBatis-Plus
spring boot·学习·mybatis