一、http协议
http协议:hypertext transport protocol超文本传输协议
基于TCP/IP的应用层通信协议,规定了浏览器(客户端)和服务器端之间的通信规则
客户端:向服务端请求数据,发送请求报文
服务端:向客户端返回数据,发送响应报文
二、请求报文组成
1、请求行
(1) 请求类型:get/post/patch/delete
(2) 请求url:在域名之后,从"/"开始
例如:http://www.baidu.com**/index.html**?a=100&b=200
(3) http协议版本号:HTTP/1.1
【注】:浏览器输入任何网址,输入回车,这个网站的访问方式一定是get。
【注】:本机地址——localhost——127.0.0.1,表示的是当前计算机本身。
2、请求头:request.headers(可以自定义)
3、空行
4、请求体:
请求体内容可以是空 ===> GET请求
请求体内容可以是字符串/JSON ===>POST
字符串:请求字符串(参数名=参数值&参数名=参数值):keywords=手机&price=2000
JSON:(键名必须是双引号,键值如果是字符串也必须是双引号):{“keywords”:“手机”,“price”:2000}
【注】:get虽然没有请求体,但是可以将 需要向服务端传递的数据 表现在地址栏----->请求url—>查询字符串(后期可以使用内置模块url的parse方法)(?参数名=参数值&参数名=参数值,即?后边的内容,这种格式就叫做请求字符串/查询字符串,是附加在请求的url的后面。 )
三、响应报文组成
1、响应行
(1)响应状态码 response.statusCode
(2)响应状态字符串 response.statusMessage
响应状态码: response.statusCode 可读可写
响应状态字符串:response.statusMessage可读可写
200 ok
404 Not Found 找不到网页,目标URL的服务器地址不存在
500 服务器相关的错误(代码出错了)
2、响应头
Content-Type : text/html; charset=utf-8
Content-Type:服务端给客户端发回来的响应内容的类型
text/html:纯文本
当响应体为end方法,且内容是中文,则必须设置该响应头
request.setHeader(‘头名’,‘头值’)
request.writeHead(响应状态码,{‘头名’,‘头值’})
3、空行
4、响应体
响应体的内容类型灵活,常见的类型有:HTML、css、js、图片、JSON、视频、音频、font…
response.end()
response.write()
四、http搭建服务
//Step1:引入模块
const http = require('http');
//Step2:创建服务
const server = http.createServer((request,response) => {
response.end('xxx');
})
//Step3:设置监听端口
server.listen(80,() => {
console.log('80端口正在运行中...');
})
五、get和post的区别
GET和POST是HTTP协议请求的两种方式。
1.使用场景
GET通常用来获取数据
POST通常用于提交数据
2.表现形式
GET 带参数请求是将参数缀到URL之后,在地址栏中输入url访问网站就是GET请求,
POST带参数请求是将参数放到请求体中(参数名=参数值&参数名=参数值)
3.传递数据大小
GET基本传递数据不到2KB
POST大小基本不上限(但是可以通过后台代码(java.php…)来设置
4.安全性
POST更安全,GET安全系数较低