HTTP协议的概念
超文本传世协议(Hyper Text Transfer Protocol) 规定了如何从网站服务器传输超文本到本地浏览器,它基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准。
报文
在HTTP请求和响应的过程中传递的数据块就叫报文,包括要传送的数据和一些附加信息,并且要遵守规定好的格式。
请求方式(Request Methods):
- GET 请求数据
- POST 发送数据
- req.method 获取请求方式
- req.url 获取请求地址
- req.headers 获取请求报文
- Reponse: 显示的是服务器响应给客户端的内容
-
// 请用系统模块const http = require('http')// 创建Web服务器const app = http.createServer()// 当客户端发送请求的时候app.on('request', (req, res) => { // 获取请求的方式 req.methods console.log(req.method) // 获取请求方式 console.log(req.headers) // 获取请求报文 console.log(req.url) // 获取请求地址 if (req.url == '/index' ) { res.end('index') } else if ( req.url == '/login') { res.end('login') } else { res.end('not found') } // 响应 return res.end('hello word')})// 监听3000端口app.listen(3000)console.log('服务器启动成功,监听端口:3000')
响应报文
1. HTTP 状态码
- 200 请求成功
- 404 请求的资源没有找到
- 500 服务器端错误
- 400 客户端请求语法错误
2. 修改状态码
res.writeHead(500)
3. res.writeHead() 内容类型
- text/html
- text/css
- application/javascript
- image/jpeg
- application/json
4.req.url () 请求地址
5.url.parse() 处理URL地址
- 参数一:要解析的url地址
- 参数二:将查询参数解析成对象形式
const url = require('url')url.parse(req.url, true)
6.路由
1 app.on('request', (req, res) => { 5 let {pathname} = url.parse(req.url) 6 7 if (pathname == '/index' ) { 8 res.end('index') 9 } else if ( pathname == '/login') {10 res.end('login')11 } else {12 res.end('not found')13 }14 })
7. 静态资源
服务器端不需要处理,可以直接响应给客户端的资源就是静态资源,例如css、javascript 、image
8. 动态资源
相同的请求地址不同的响应资源,这种资源就是动态资源。