接口自动化之三 http协议

Posted 唐测试攻城狮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口自动化之三 http协议相关的知识,希望对你有一定的参考价值。

http:

  • HTTP:超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传输协议。HTTP协议是一种无状态协议。

  • 组成

    • 第2-N行:请求headers(如果有Cookie,最后一行为Cookie)

    • 空一行

    • 请求数据(POST等方法使用)

请求

  • url组成格式

    • URL编码是一种浏览器用来打包请求参数及表单参数的格式, 参数和参数之间使用&分割,非ASCII码使用%加16进制编码替换

  • 请求方法

    • 1 GET 请求指定的页面信息,并返回实体主体

    • 2POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)数据被包含在请求体中

    • 3 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

    • 4 PUT 从客户端向服务器传送的数据取代指定的文档的内容

    • 5DELETE 请求服务器删除指定的页面

    • 6 CONNECT 预留给能够将连接改为管道方式的代理服务器

    • 7 OPTIONS 允许客户端查看服务器的性能

    • 8 TRACE 回显服务器收到的请求,主要用于测试或诊断


    • get请求和post请求区别

    • GET请求:

      • GET请求可被缓存

      • GET请求保留在浏览器历史记录中

      • GET请求可被收藏为书签

      • GET请求不应在处理敏感数据时使用

      • GET请求有长度限制

      • GET请求只应当用于取回数据

    • POST请求:

      • POST请求不会被缓存

      • POST请求不会保留在浏览器历史记录中

      • POST不能被收藏为书签

      • POST请求对数据长度没有要求

      请求参数

      • 不同的参数之间用&隔开,非ASCII码参数会自动url encode

      请求header(常见header)

      • Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html

      • Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5

      • Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 Accept-Encoding: compress, gzip

      • Accept-Language 浏览器可接受的语言 Accept-Language: en,zh

      • Cache-Control 指定请求和响应遵循的缓存机制 Cache-Control: no-cache

      • Connection 表示是否需要持久连接。 (HTTP 1.1默认进行持久连接) Connection: close

      • Cookie 请求时,把保存在该请求域名下的所有cookie发送给服务器。 Cookie: $Version=1;

      • Content-Length 请求的内容长度 Content-Length: 348

      • Content-Type 请求的与实体对应的MIME信息 Content-Type: application/x-www-form-urlencoded

      • Host 指定请求的服务器的域名和端口号 Host: www.google.com题 10

      • User-Agent User-Agent的内容包含发出请求的用户信息 User-Agent: Mozilla/5.0 (Linux; X11)

      • Cache-Control 告诉所有的缓存机制是否可以缓存及哪种类型 Cache-Control: no-cache

      请求数据类型

      • application/x-www-form-urlencoded:网页表单格式(默认)

      • application/json:REST接口常用格式

      • text/xml:xml格式,RPC接口,Dubbo接口常用格式

      • test/html:html格式

      • multipart/form-data: 混合表单,支持上传图片

      数据编码

      • 子主ASCII码: 单字节,美国信息交换标准码, 包含数字,字母,英文标点及一些控制字符题

      • ISO-8859-1:又称Latin1,单字节,向下兼容ASCII,用于支持部分于欧洲使用的语言

      • ANSI编码:单字节表示英文,双字节表示汉字,对ASCII的扩展,不同的国家和地区制定了不同的标准,中文中的GBK,GB2312属于ANSI编码

      • Unicode编码: 采用二个字节编码(英文和中文的字符都以双字节存放),与ANSI码不兼容

      • UTF-8:是目前互联网上使用最广泛的一种Unicode 编码方式,又称万国码

      • Base64: 一种用64个字符来表示任意二进制数据的方法。

      • Base64编码的作用:由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。

      • 而且base64特别适合在http,mime协议下快速传输数据。

      响应

      • 接口返回的信息,包含HTTP状态码,响应头和相应信息

      • 常见的响应格式有:html,json,xml

      • http状态码

        • 1** 信息,服务器收到请求,需要请求者继续执行操作

        • 2** 成功,操作被成功接收并处理

        • 3** 重定向,需要进一步的操作以完成请求

        • 4** 客户端错误,请求包含语法错误或无法完成请求

        • 5** 服务器错误,服务器在处理请求的过程中发生了错误

      常见http相应码

      • 200:成功

      • 301/302:请求重定向到另外一个接口

      • 400: 请求语法错误

      • 403:资源没有访问权限

      • 404:资源不存在(有可能是请求url错误或参数不正确)

      • 405:请求方法不被允许(比如接口只允许Post,使用Get请求接口)

      • 500:服务器内部错误(通常是服务器挂了或接口Bug)

      • 502: 网关失效

      • 504: 网关请求超时

      http与https

      • HTTP协议传输的数据都是未加密的,HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

      • HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

      • HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。

      • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

      • HTTP的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

      cookie和session

      • **Cookie/Cookies: **是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

      • **Session:**服务端为客户端访问所建立和维持的会话,通常会生成一个唯一的id,会话有一定的有效期。由于HTTP是无状态的,即服务器不知道用户上一次做
        了什么,默认也无法识别用户身份。比

      • 较流行的做法是:
        用户访问时服务端建立会话(Session),后续的访问中,服务器通过辨识,客户端请求时携带的Cookies内容来识别用户

      cookie和seesion的区别

      • cookie是存在客户端(浏览器)的进程内存中和客户端所在的机器硬盘上

      • cookie只能能够存储少量文本,大概4K大小

      • cookie是不能在不同浏览器之间共享

      • Session存在服务器端,存在网站进程的内存中

      • Session在初次设置session的时候,会在session池中实例化一个session对象,以sessionid 的值作为key,同时会将key以cookie的形式保存到客户端的内存中

      • Session的作用域只存在当前浏览器的会话中,当浏览器关闭以后就会将sessionid丢失,但是服务器的Session对象要20分钟以后才会回收


      • 授权与加密

      • 常见的接口安全策略:

          1. Session/Cookie机制:即需要登录,登录后可访问各个接口,最常用的一种策略,适用于内部接口。

          2. 固定appid模式:用户注册时会生成一个唯一的appid,用户调用接口时需要携带appid,适用于公开接口,安全性较差。

          3. 动态token模式:token即身份令牌,用户访问接口需要使用个人appid临时申请一个token,token有一定有效期,适用于公开接口,安全性较appid模式好。

           4. 开放协议:Basic Auth/ Oauth1.0 / Oauth2.0: 适用于开放接口。

          1. 数字签名:将所有请求参数及参数值进行排列拼接,加上用户私钥,再进行Md5或其他加密生成一个请求的签名(sign),请求是需要携带签名,服务器收到请求
            后,会对请求重新计算签名并核实与请求所携带签名是否一致。安全性较高,可以有效防止请求被篡改。适用于内部接口及微服务接口。常见的加密算法 在接口
            数据传输过程中常对一些敏感数据(如密码)进行Base64编码或MD5加密,以增加安全性。加密算法分为对称式加密算法和非对称式加密算法,对称式加解密使
            用同一个秘钥,非对称式使用不同的秘钥。

          • 对称式加密

            • DES: 数据加密标准,速度较快,适用于加密大量数据的场合

            • AES: 高级加密标准,速度快,安全级别高

          • 非对称式加密

            • RSA: 是一个支持变长密钥的公共密钥算法, 分公钥和私钥,SSH协议使用该算法

            • MD5: 最常用的一种加密方法,是一种摘要算法。

          缓存

          • HTTP 缓存机制作是 web 性能优化的重要手段,当用户第一次请求服务器资源时,服务器将资源缓存到客户端本地,在一定时间内(缓存有效期内)当用户再次向服务器
            请求同样的资源时,可以直接从缓存中读取,而不用从服务器下载。

          • 接口测试中缓存相关注意点

            • 在更新或调试接口是,注意是否需要清理缓存(或临时禁用缓存)

            • 缓存有一定的有效期

            • 接口性能测试中会关注缓存的命中率



        94年的我们,2015年的我们,还在大学里读着大三,那时候的我们准备着各奔东西的事,我们比任何人都向往着2020年的到来,我们约好2020年,那年刚满26岁的我们,在5月20号一起去注册领证,哪怕当时的我们还孤身一人。


        然而现实的2020年,艰难开局,没有人能置身事外。面对2020年的许多困境,我们在数不清的声嘶力竭之后,仍然要被迫退回原点。但大部分人,依然在奋勇向前,赌一次翻盘的机会。

        This browser does not support music or audio playback. Please play it in WeChat or another browser.


以上是关于接口自动化之三 http协议的主要内容,如果未能解决你的问题,请参考以下文章

web自动化测试-D3-学习笔记之三(Selenium-Switch与SelectApi接口详解)

python接口自动化测试一:http协议

python接口自动化测试一:http协议

python+pytest接口自动化-HTTP协议基础

python+pytest接口自动化-HTTP协议基础

接口自动化的根基--HTTP协议