01. http协议:
1.协议
=> 超文本传输协议
=> 基于请求响应模式的,无状态,无连接的应用层协议,一般应运于web程序中.
=> 白话: 制定客户端(前端)与服务器(后端)通讯的规则
1.请求响应模式
客户端 -请求-> 服务器
<-响应-
2. 无状态
http协议不会保存状态数据,需要自己写代码保存
3. 无连接
每次请求响应完成,连接自动断开
http是超文本传输协议,信息是明文传输,
https 则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全
2.http之url
url: 统一资源定位符
=> 作用: 定位网络中资源
=> 格式: http://ip:port/path/res
http
ip: ip地址
网络中唯一标识一台计算机
10.7.178.117
port: 端口号
区分电脑中不同应用程序
path: 路径
res:资源
=> 如: http://10.7.178.117:3000/productlist
3.http工作原理
工作原理:
1. 建立连接, 客户端与服务端建立连接
2. 发送请求, 客户端向服务端发起一个请求
3. 响应数据, 服务端接收到客户端请求之后,响应相应数据给客户端
4. 断开连接,
1. 客户端与服务端建立连接
三次握手协议
=>客户端与服务端之间建立稳定可靠的连接
2. 发送请求, 客户端向服务端发起一个请求
请求是一串有格式的文本信息 - 请求包
三部分: 请求行, 请求头部, 请求正文
-请求行
请求方法method 请求地址url 协议版本
get 客户端获取服务端数据
post 提交数据到服务端
put 修改数据
delete 删除
...
-请求头部
格式: 名称:值
host:10.7.178.117 //主机
content-type : text/html //数据类型
...
-请求正文
username='admin'&password=123
注:只有post请求时,内容参数放请求正文里
如果是get请求,内容参数放url地址后面
http://10.7.178.117:3000/login?username='admin'&password=123
3. 响应数据
有格式的文本信息 - 响应包
响应包: 状态行, 响应头部, 响应正文
状态行: 协议 状态码 状态码描述
200 ok
4xx 客户端出错
404 请求url地址出错
5xx 服务端出错
500 服务端程序出错
401 用户认证
403 服务器拒绝
304 未修改
响应头部: 名称:值
content-type: text/html
响应正文
4. 断开连接
四次握手
4.抓包调试工具
查看后端发起的请求
1.chrome
右键 - 检查 - network - ( 请求行)general | (相应内容)response
2.postman工具 - chrome插件
url - 输入 chrome//apps - skip - 输入你想请求的数据
05.ajax异步网络通信技术
ajax异步网络通讯技术
现在允许浏览器与服务器通信而无须刷新当前页面的技术.
不需要刷新整个页面,只刷新局部页面的一种异步通讯技术;
ajax核心对象 XMLHttpRequest
XMLHttpRequest
=> new window.XMLHttpRequest()
建立客户端与服务端连接
open(method,url,true|false)
open(method,url)
open()
=>建立客户端与服务端连接
open('post','http://10.7.178.117:3000/productlist')
open('get','http://10.7.178.117:3000/productlist?username:admin&password=123')
发送请求
send()
=>发送请求
=>post参数放send方法作参数发送 send('username:admin&password=123')
=>get send()
处理响应数据
onreadystatechange=function(){
//1.就绪码: readyState 判断当前响应进度
readystate == 4 表示响应完成
//2. 状态码: status , statusText 状态描述
// 3. 响应内容: responseText
}
练习ajax
1练习异步:
const btn = document.querySelector('.btn')
const pEle = document.querySelector('p')
btn.addEventListener('click', function () {
//连接后端服务器,获取后端数据
//1.创建XMLHttpRequest对象
let xhr = new window.XMLHttpRequest()
//2.建立连接
xhr.open('get', 'http://10.7.178.117:3000/productlist')
//3.发送请求
xhr.send()
//4.处理响应
xhr.onreadystatechange = function () {
//就绪码
if (xhr.readyState == 4) {
//状态码
if (xhr.status == 200) {
let data = xhr.responseText
//得到的数据是字符串 转换成对象输出
let productList = JSON.parse(data)
//动态渲染
loadProductList(productList) //传参进去
}
}
}
})
解决跨域问题:
//解决跨域问题 == 解决乱码问题
response.setHeader('Access-Control-Allow-Origin','*')
2练习异步动态渲染:
//动态渲染商品列表数据
function loadProductList(productlist) {
var strArr = productlist.map(item => {
return str = `
<div class="pro">
<img src="${item.url}" alt="">
<h2>${item.name}</h2>
<p>$${item.price}</p>
</div>`
})
var str = strArr.join('')
console.log(str);
const divEle = document.querySelector('.product-list')
divEle.innerHTML = str
}
06.接口文档
一个应用程序中有很多接口
一个应用程序都会有一个接口文档
每个接口对应一个业务
在接口中定义:
请求url地址
请求方法
请求参数
username | password
相应数据
ex:
电商网站程序
注册 登录 商品列表 商品详情 购物车 订单 地址 会员
定义业务接口
商品列表接口:
url: http://10.7.178.117:3000/productlist
method: get
参数: 无
响应数据:
[
{
id: 1001,
name: "javascript高级编程",
price: 89,
num: 0,
url: "https://img1.baidu.com/it/u=337910016,91561566&fm=26&fmt=auto"
},
{
id: 1002,
name: "css高级编程",
price: 79,
num: 0,
url: "https://img1.baidu.com/it/u=454394458,1998378568&fm=253&fmt=auto&app=138&f=JPEG"
},
]
07.get | post请求区别
get和post请求区别
1. 安全性
get请求参数拼接在url地址后面
post请求参数存储在请求包请求正文本中
post更安全
2. 参数大小
post请求比get传输数更大
3. 参数类型
get字符串类型数据
post传输可以任意类型
文件 图片
面试 get请求一定不能传图片吗?
http://ip:port/base64=asdfaswqerjpava;shdfpawifn/asnfd;asfdhias;fdnas;f
08.请求头
请求头 content-type
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
key:value
content-type:application/x-www-form-urlencoded
application/x-www-form-urlencoded
表示参数以名称值对形式组织,
比如: username='admin'&password=123&age=18
application/json
表示参数以json形式组织
比如: {username='admin',password=123}
multipat/formdate
表示参数是文件形式
text/html
标签:http,请求,get,url,HTTP,打卡,服务端,客户端
From: https://blog.51cto.com/u_16103295/6365901