目录
- 参数
- 观察参数
- 测试压缩
- 测试数据类型
0. 概述
- 数据协商是客户端和服务端的达成的一种协议,客户端通过请求头告诉服务端它想要的什么样的数据,服务端则通过响应头告诉客户端它返回的是什么样的数据。
- 这仅是一种协议,服务端可以不给客户端它想要的格式,客户端也可以不按照服务端给的格式进行显示。
1. 参数
请求头 | 响应头 | 功能 |
---|---|---|
Accept | Content-Type | 数据类型使用mimetype声明 |
Accept-Encoding | Content-Encoding | 通常用于压缩的格式 |
Accpet-Language | Content-Language | 语言 |
User-Agent | ------ | 我是谁(例如火狐,Chorme,手机,各种语言的爬虫) |
2. 观察参数
-
代码
/**
* 1. 观察请求头和响应头中的数据协商
*/
const http = require('http')
const port = 9000
http.createServer(function (request, response) {
response.writeHead(200, {
'Content-Type': 'text/html',
})
response.end('<div>I am html</div>')
}).listen(port)
console.log("serve is listen ", port)
-
测试
-
q
代表权重
3. 测试压缩
-
不使用压缩
随意读入一个html
/**
* 1. 测试gzip压缩
*/
const http = require('http')
const fs = require('fs')
const zlib =require('zlib')
const port = 9000
http.createServer(function (request, response) {
const html = fs.readFileSync('index.html')
response.writeHead(200, {
'Content-Type': 'text/html',
})
// 不使用压缩
// response.end(html)
}).listen(port)
console.log("serve is listen ", port)
第一行的大小为:响应头 + 压缩的响应体(如果没压缩就是原本的响应体)
第二行的大小为:解压缩后的响应体
-
使用压缩
/**
* 1. 测试gzip压缩
*/
const http = require('http')
const fs = require('fs')
const zlib =require('zlib')
const port = 9000
http.createServer(function (request, response) {
const html = fs.readFileSync('index.html')
response.writeHead(200, {
'Content-Type': 'text/html',
// 使用压缩
'Content-Encoding': 'gzip'
})
// 使用压缩
response.end(zlib.gzipSync(html))
// 不使用压缩
// response.end(html)
}).listen(port)
console.log("serve is listen ", port)
可以观察到第一行的大小变小了,原因就是响应体被压缩了。
4. 测试数据类型
-
代码
- js部分,返回一个html即可
- html部分完成一个表单
- enctype默认值就是
application/x-www-form-urlencoded
<form action="/form" method="GET" enctype="application/x-www-form-urlencoded">
姓名:<input type="text" value="11" name="name">
性别:<input type="text" value="11" name="sex">
<button type="submit">提交</button>
</form>
-
观察
-
如果是GET方法,则会自动放在url后面,如果是POST则会直接放入响应体中。
<form action="/form" method="POST" enctype="application/x-www-form-urlencoded">
-
表单中需要传递文件