http概述2
作者:互联网
一、工具:
1.工具介绍
postman :很主流的API测试工具,也是工作里面使用最广泛的研发工具。
JMeter:
ApiPost:
2.安装postman:
安装好直接打开,不用注册。
二、通信模式:
1、同步通信:
客户端请求服务端必须有回应,在回应之前不能做别的操作,有缺陷,会造成排队、等待、堵塞。
当任务太多时,服务器压力太大,可能会造成崩溃,为了防止崩溃这时就需要线程池技术,我们现在的软件都是使用这种技术。
线程池技术:(所有的请求都是task,每个task都是一个线程)线程池指定同时执行最大任务数。(如服务器指定最大任务数为90,客户端发来100个任务数,剩下的10个采取队列机制(先进先出原则))queue:队列(先进先出的原则)
2、异步通信:
客户端向mq消息队列发送数据(商品名、价格),服务端从mq消息队列获取数据,向mq消息队列回应(扣款成功),mq消息队列向客户端回应(支付成功)
主流的MQ消息中间件:
Kafka、RabbitMQ、ActiveMQ
APache是Apache软件基金会的一个开放源码的网页服务器
Kafka在大数据领域主要使用在实时流数据方面非常优秀,能够处理千万亿的数据
RabbitMQ主要应用于一般的服务,对数据的一致性、可靠性、安全性要求高。
三、请求与响应
1.在网页中抓取网络请求
京东网为例:右键检查→Network→刷新→www.jd.com
2.客户端向服务端发送Request请求:
2.1作用:
客户端(app、浏览器)发送请求给服务器时,使用的协议——http请求协议。
规定发送给服务器的数据传输的语法格式。
2.2格式:
1、请求方法
2、请求地址:(url:http协议+域名+资源路径)
3、请求头: Key:Value格式
User-Agent:描述请求发送端的浏览器类型
Content-Type:描述请求参数的数据类型 (json数据格式;form表单数据;xml)
referer:
cookie:
4、请求参数
post和put大部分有请求参数(在postman中有请求参数的方法需要在请求头中添加类型,在请求体中选择类型)
get和delete大部分没有请求参数
postman的介绍:(根据接口文档、模拟客户端向服务器发送请求)
3.请求方法:
常用的请求方法有8种,最常用的有4-5种:
GET请求方法:获取资源
POST请求方法:添加资源(对服务端已存在的资源也可以做修改和删除操作)
PUT:修改资源
DELETE:删除资源
OPTIONS:路由映射
3.1 GET请求方法:获取资源
例1:
步骤1:打开京东网,在获取到的数据种找一个图片类型pgn,获取请求地址复制到postman中用:
步骤2:在postman中选GET方法,粘贴获取到的地址,点击send就可以获取到图片了:
GET请求参数:
query params
例2:有请求参数的GET方法
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo
步骤1:在接口文档中获取方法和地址:(协议加第二行的域名加第一行的资源路径)
步骤2:在postman中选择GET方法,复制地址,点击send会自动出现请求参数(KEY),我们进行填写(如下图的VALUE部分)
(GET方法的请求参数 在postman中是写在Params中的)
3.2 POST请求方法:添加资源(对服务端已存在的资源也可以做修改和删除操作)
请求方法:
请求地址:
请求头:
表现形式为key-value的形式
在请求头中关注”Content-Type“来获取请求参数的类型,如:
json数据格式:application/json
表单格式:application/x-www-form-urlencoded
XML数据格式:text/xml
请求参数:
(在postman请求体中选择数据类型时:form格式直接选择x-www-form-urlencoded,xml和json格式需要先点raw再选)
例1:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo
步骤1:在接口文档中获取:请求方法;请求地址(地址要加协议);请求头中获取请求参数类型;具体的请求参数:
解析接口文档总结一下获取到的内容:
地址:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx
方法:POST
请求头:
数据格式:Content-Type: text/xml; charset=utf-8
请求参数:
步骤2:打开postman工具:
1、选择请求方法
2、粘贴请求地址(前面加http协议)
3、点请求头Headers
4、点Body,选择获取到的数据的类型(form格式直接选择x-www-form-urlencoded,xml和json格式需要先点raw再选)选响应的数据数据类型,填写具体的请求参数
例2:
http://101.43.158.84/#/login 13484545195 asd888
步骤1:获取请求地址、请求方法、请求数据类型、具体请求参数:
步骤2:在postman中选择方法、填地址(要填协议http)、在请求头中添加数据类型、在请求体中选择参数类型、粘贴参数
2.3.3 PUT:修改资源
2.3.4 DELETE:删除资源
2.3.5 OPTIONS:路由映射
3.服务端响应客户端:
3.1作用:
服务器端,针对客户端发送的http请求,回发响应数据——http应答
规定回发给客户端的数据组织格式
3.2格式:
1、协议状态码
2、响应头 (key:value)
Content-Type:描述响应体中的数据类型
3、响应数据(绝大多数不为空。请求成功:回发数据,失败:回发错误信息)
4、响应时间(记):
指的是客户端发送的时间加上服务端响应回复客户端请求的时间之和。以毫秒为单位。
响应数据的大小以kb为单位。
1、XML的格式
2、表单数据格式
3、JSON数据格式
COOKIE:
1、反爬虫
2、身份认证
Referer:请求是从哪个页面发送过来的
User-Agent:通过什么客户端向服务端发送请求
Content-Type:指的是客户端通过什么样的数据格式向服务端发送请求(XML,表单,JSON)
如果是互联网的产品,请求头必须需要带:
1、cookie
2、Referer
3、user-agent
4、content-type
如果是自己公司的产品:
1、content-type
2、cookie
假设是JSON数据格式的,那么它的请求头是:
Content-Type:Application/Json
1、协议状态码:Status Code
2、响应头
Content-Type :指的是返回的响应数据的数据格式
Set-Cookie:服务端把身份认证信息返回给客户端
3、响应数据
200 请求成功
301 永久重定向
302 临时重定项
400 Bad Request 客户端请求错误
401 Unauthorized ⽆权限访问该系统
403 Forbidden 有权限但是禁⽌访问
404 请求的资源不存在
405 请求方法错误
415 请求头错误
500 服务器内部错误
504 GateWay Timeout(请求超时)
504:ApiGateWay TimeOut
ApiGateWay (网关):
1、统一的API访问入口(限流)
2、统一的认证授权体系
3、统一的安全体系
一、常用状态码(重点!!)
200 请求成功
201 created :添加资源成功
204 No Content :删除资源成功
301 Moved Permanently 永久重定向(请求A的时候,会自动跳转到B)
302 临时重定项
400 Bad Request 客户端请求错误
401 Unauthorized 无权限访问该系统
403 Forbidden 有权限但是禁⽌访问
404 请求的资源不存在
405 不被允许的请求⽅法
415:只有请求头不对
500 服务器内部错误
504 GateWay Timeout网关超时
1.1 返回301:永久重定向
如在空白标签页进入www.360buy.com会跳转到京东,并且状态码显示为301(就说明此域名被永久重定向到京东的首页了),这种情况与开发确认即可。
1.2 返回400:Bad Request 客户端请求错误
1、请求头不对 2、请求参数不对
(检查发出的请求)
1.3 针对401和403在postman中认证(授权、鉴权)方式:
1、基本 basic
2、常规 digest
3、自定义
4、oauth2.0 (微信)
1.4 404:请求的资源不存在(检查请求路径)
(资源路径错误返回404)
1.5 405:不被允许的请求方法
如果之前的方法都是允许的,但是突然所有方法都出现405,这可能是引入了安全体系,需要找运维把服务器ip地址增加到白名单里。
1.6 415:只有请求头不对
1.7 500 :服务器内部错误
(开发问题)
1.8 504 :
网关超时---》不一定是程序员代码的问题,也可能是第三方的问题
APIgateway 网关:
1、统一API访问入口
2、监控API流量
二、请求头
请求头中内容:
cookie: 反爬虫 ,认证授权
referer:请求目标地址是从哪个页面发送过来的
content-type:表示什么样的数据格式
user-agent:表示访问目标服务器的是什么系统版本、浏览器、及版本信息
以上四个在请求时都需要输,进行伪装。有些内容可能为内部自定义请求头。
如:在拉钩网搜索职位,在postman中发送请求获取本页的信息:
需要在postman的Headers中输在拉勾网获取的cookie、referer、content-type、user-agent和Body中输在拉勾网获取的Payload请求参数。
三、响应头:
content-type:返回的响应数据是什么样的数据格式 (JSON XML HTML)
Set-cookie:服务端把生成的认证凭证信息返回给客户端
http://ws.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline
四、cookie session token(重点!!)
HTTP是一个无状态的协议,所以也就导致了COOKIE技术的发展,通过COOKIE能够记下用户操作的行为状态,但是COOKIE它是存储在客户端的,所以就不安全,为了解决安全的问题,SESSION诞生,SESSION它是存储在服务端相对来说比较安全。后面移动互联网诞生,就有了TOKEN,TOKEN本质上是SESSION原理来实现的,它的流程与SESSION一样,它被称为一个令牌。
cookie:不安全 存储在客户端
session:相对安全,存储在服务端
token:session原理,随机字符串,被称为令牌。
4.1 COOKIE:
能够记下用户操作的行为状态
1、存储在客户端
2、不安全
以登录为例来说明COOKIE的流程:
1、客户端输入账户密码登录成功
2、在服务端生成COOKIE的信息,通过响应头中的SET-COOKIE把生成的COOKIE返回给客户端
3、客户端在下次请求的时候,通过请求头中的cookie把返回的cookie带上发送给服务端,服务端内部进行验证。
4.2 SESSION
SESSION记录用户的操作行为,它是存储在服务端相对来说比较安全。
以登录为例来说明SESSION的流程:
1、客户端输入账户密码登录成功
2、在服务端会生成SessionID,同时存储在服务端本地,通过响应头中的Set-cookie把生成的SessionID返回给客户端
3、客户端接收到SessionID后
4、客户端再次请求服务端的时候(比如访问个人主页),会在请求头的cookie中带上SessionID发送给服务端
5、服务端接收到客户端发送过来的SessionID,与存储在服务端本地的SessionID之间会进行对比,如果一致,允许访问个人主页,如果不一致,就会重定向到登录的页面。
实践理解session:
https://i.epwk.com/Home/Employer/index.html
13484545195 asd888/==
1、打开开发者工具后登录此页面
2、登录成功后,捕捉到login,其中的响应头会有一些Set-Cookie(复制出来)
3、点击个人主页进行查看,打开开发者工具,刷新页面后会有我们访问个人主页的这一请求,会看到Cookie数据(复制出来)
4、打开记事本工具或者文本对比工具(比较我们的请求Cookie中应该是包含我们登录时的返回的Set-Cookie的内容的)
4.3 TOKEN
TOKEN本质上是SESSION原理来实现的,它的流程与SESSION一样。
TOKEN特点:
1、每次登录成功后,生成的TOKEN都是不一样的
2、返回的TOKEN是一个随机的字符串
实例理解:
登录页面成功后会返回一个token:
当访问一个页面时,请求头中带着token请求(Authorization的JWT后):
比对返回的TOKEN和请求中带的TOKEN:
持久化:把某些特定的信息存储下来(临时/永久)
当把图中箭头标的位置clear清除时,会立刻跳转到登录页面(相当于删除了持久化中记录的用户状态)
标签:http,postman,概述,cookie,客户端,服务端,请求 来源: https://www.cnblogs.com/wrwangrong/p/16496622.html