企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] <br> ### HTTP 协议介绍 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一个属于`应用层`的面向对象的传输协议。 HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。WEB服务器根据接收到的请求后,向客户端发送响应信息。 总结:HTTP消息是一种特别常用的客户端与服务器之间交换数据的方式 ![](https://box.kancloud.cn/554ec3f18ad5512219b8a48f19578b53_592x195.jpg) **特点:** - 无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接 - 无状态:每个请求都是独立的,不会自动记忆状态。聪明的人们,为了解决对话能保持状态,使用了session与cookie来解决。 ### HTTP 请求的组成 如果学习过Fiddler的朋友,可以抓一下前面一节中的简单GET与POST请求,在Inspector的raw窗口下,可以看到如下信息: GET请求中,body内容为空,参数主要放在url中。 ![](https://box.kancloud.cn/cc6a198a881aa22438a2d802d8598a76_1263x304.jpg) POST请求中,参数一般放在body中。 ![](https://box.kancloud.cn/5ec6c4fd39a4d8d291f52fc7e43fca22_974x416.jpg) 通过上面两个请求,我们可以总结出,HTTP请求,主要有三部分组成 - 起始行:包含请求方法,请求地址 - 请求头headers:格式如key:value,主要用于传递客户端的特定配置信息 - 请求体body: post方法存储参数的位置 ### Postman 发起一个API请求 创建一个请求,主要配置四部分 1.请求方法method;2.请求地址URL;3.请求头headers;4.请求体body 对应在Postman中的设置位置如 ![](https://box.kancloud.cn/928bd9924586ba401c905e819866408f_607x341.jpg) #### Method 在HTTP中的method有GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE,其中最常用的只有`GET`与`POST` #### URL 点击按钮“Params”会展开参数编辑窗口,在窗口中填入的参数键值对,会自动拼接到URL参数中。直接写在URL中的参数,也会自动以键值对的形式显示在编辑窗口 #### Headers HTTP通用的headers有一下内容: ![](https://box.kancloud.cn/b11bfa9ad10764a5a68ef307cb15ecc6_749x2013.jpg) 当然,我们可以添加任意名称的headers,在Postman中,不管是headers的key或者value,输入部分字符后都有“自动联想”提示,非常的好用! #### Cookies 在Native APP中,提供了Cookie管理器。 ![](https://box.kancloud.cn/8793febe7932a6bf4e7fec50d9657bb9_598x260.jpg) >[info] 在客户端,发送请求时附带上cookie,一般用于**保持用户状态**。但是关键的cookie可不是客户端生成哦,而是服务端创建的。服务端会先创建一个会话Session,将SessionID作为cookie设置到客户端,在之后的一系列请求中只要带上SessionID,服务端则会认为这是同一个用户在访问了。 在cookie的使用中,有一个非常重要的规则,就是`Cookie不能跨域访问`。例如在B网站中不能使用访问A网站时生成的cookie。因此,在设置cookie时,需要先指定域名,然后设置cookie内容。 ![](https://box.kancloud.cn/e34e3af8cf28611561ce5afb38953bde_698x228.jpg) #### Body 在POST方法中,参数通常会设置在Body中。 *注意:参数值不会自动进行`URL-encoded`,如果想要某参数值URL-encoded,可以选择参数值字符串,右键选择“EncodeURIcomponent”即可* 在Body参数的格式上,有四种:“form-data”,“urlencoded”,“raw”,“binary” 当我们通过HTTP协议发送请求时,headers中携带的Content-Type会告诉服务器所传参数的类型,以便于服务器能正确解析请求参数。 ![](https://box.kancloud.cn/cef3812df1bb123b1117a7d04d5d5d6a_607x272.jpg) **“form-data"类型**,相当于"content-type": "multipart/form-data” Form-data是默认的web表单数据传输的编码类型,这模拟了在网站上填写`表单`,并提交它。`既可以上传键值对,也可以上传文件`。 **“x-www-form-urlencoded”类型**,相当于"content-type": "application/x-www-form-urlencoded" `只能上传键值对`,会将`表单`内的数据转换为键值对,并且自动对参数值进行`urlencode编码`。 ![](https://box.kancloud.cn/8e821bfa9cf0d9913456d25891a99059_594x204.jpg) **“raw”类型**,对应"content-type"可以是“text/plain”,"application/json","text/xml",或"text/html" 可以上传`任意格式的文本`,可以上传text、json、xml、html等 ![](https://box.kancloud.cn/5c120b7202cd693f1c094ae0bd549a4a_607x219.jpg) **“binary”类型**,相当于“Content-Type”:“application/octet-stream” 只可以上传`二进制数据`,通常用来上传文件 ### HTTP 响应的组成 ![](https://box.kancloud.cn/c8e3369bb7561e29f4fde9249f526ead_1259x252.jpg) HTTP响应也主要有三部分组成 - 状态行 - 响应头headers - 响应体body 对应Postman中的显示区域如: ![](https://box.kancloud.cn/87bf790dc9ac36042659394f0ee94da7_1091x467.jpg) HTTP通用的响应headers有 ![](https://box.kancloud.cn/aefd4e73910afecd2930c09711b1a9ff_751x2403.jpg) ### 课后学习要求 好好百度下HTTP协议。关键是要了解HTTP协议的特点、HTTP headers中各个配置的含义、HTTP的各种响应码的含义。 <hr style="margin-top:100px"> :-: ![](https://box.kancloud.cn/331f659e8e6cddb0d9f182e00e32803f_258x258.jpg) ***微信扫一扫,关注“python测试开发圈”,获取更多测试开发分享!***