接口基础知识

接口基础知识

进行接口测试,首先需要了解什么是接口,下面将详细讲解接口的基础知识。
内容来源:
有兴趣可以去读读这本书
在这里插入图片描述

1.1.1 接口的定义

两个不同的系统或者一个系统中两个不同的功能,它们之间相互连接的部分称为接口。
在软件测试中,常说的接口一般有两种:图形用户接口(Graphical User Interface,GUI),它是人与程序的接口;应用程序编程接口(Application Programma Interface,API),本书中提到的接口特指API。
API是一组定义、程序及协议的集合,API可实现计算机软件之间的相互通信。API的一个主要功能是提供通用功能集。程序员通过使用API函数开发应用程序,从而可以避免编写无用程序,减轻编程任务。很多公司将开发岗位分为前端工程师和后端工程师,他们之间相互配合完成工作。一般来说,他们会协商接口的定义方式,其中一方定义接口(一般由后端工程师定义接口),另一方来调用接口,以实现预期功能。
前后端分离是近年来Web应用开发的一个发展趋势。这种模式具有以下优势。
① 后端工程师不用精通前端技术(如HTML、JavaScript或CSS),只专注于数据的处理,对外提供API即可。
② 前端工程师的专业性越来越强,其通过API获取数据,并专注于页面设计。
③ 前后端分离可扩大接口的应用范围,开发的接口可以应用到Web页面上,也可以应用到App上。

1.1.2 接口的分类

依据所遵循协议的不同,常见接口可以分为以下3类。
(1)HTTP接口,它是基于超文本传输协议(HyperText Transfer Protocol,HTTP)开发的接口,但并不能排除没有使用其他协议。
(2)Web Service接口,它是系统对外的接口,比如你要从别的网站或服务器上获取资源,一般来说,别人不会把数据库共享给你,他们会提供一个他们写好的方法,让你用来获取数据,你使用他们写好的方法就能引用他们提供的接口,从而达到同步数据的目的。
(3)RESTful接口,简称为REST,其描述了一个架构样式的网络系统,核心是面向资源。REST专门针对网络应用设计和开发方式,降低开发的复杂性,提高系统的可伸缩性。
基于浏览器/服务器模式(Brower/Server,B/S)的软件系统接口大多数为HTTP接口,因此,本书将重点介绍HTTP接口的测试方法。要测试HTTP接口,首先需要了解HTTP、HTTP请求和响应的相关知识。

1.1.3 HTTP

HTTP是应用最为广泛的网络协议之一,所有的万维网文件都必须遵守这个标准。设计HTTP的目的是为了提供一种发布和接收HTML页面的方法。1960年德特·纳尔逊(Ted Nelson)构思了一种通过计算机处理文本信息的方法,并称之为超文本(HyperText),这成为HTTP标准架构的发展根基。Ted Nelson组织协调万维网联盟(World Wide Web Consortium,W3C)和互联网工程任务组(The Internet Engineering Task Force,IETF)共同合作研究,最终发布了一系列请求评议(Request For Comments,RFC),其中著名的RFC 2616定义了HTTP 1.1。
HTTP的主要特点可概括为如下几点。
(1)支持客户端/服务器模式。客户端向服务器请求服务时,只需传送请求方法和路径。常用的请求方法有GET、POST。每种方法规定的客户端与服务器联系的类型不同。
(2)简单。由于HTTP简单,服务器的程序规模小,因而通信速度比较快。
(3)灵活。HTTP允许传输任意类型的数据对象。正在传输的类型由ContentType加以标记。
(4)无连接。限制每次连接,使其只处理一个请求。服务器处理完客户端的请求,并收到客户端的应答后,即断开连接。采用这种方式可以节省传输时间。
(5)无状态。HTTP是无状态协议,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则必须重新上传,这样可能导致每次连接传送的数据量增大,如果服务器不需要前面的信息,则应答就会比较快。

1.1.4 HTTP请求

HTTP请求包含4个部分,分别是统一资源定位符、方法(Method)、头(Headers)和体(Body)。

  1. 统一资源定位符
    统一资源定位符(Uniform Resource Locator,URL)是用于完整地描述互联网上网页和其他资源地址的一种标识方法。URL给资源的位置提供一种抽象的表示方法,并用这种方法给资源定位。只要能够对资源定位,用户就可以对资源进行各种操作,如存取、更新、替换和查看属性等。这里的“资源”是指在互联网上可以被访问的任何对象,包括目录、文件、图像、声音等,URL相当于文件名在网络范围的扩展。由于访问不同资源所使用的协议不同,所以URL还给出了访问某个资源时所使用的协议。URL的一般形式为“<协议>://<主机>:<端口>/<路径>/<文件名>”。
    其中,“<协议>”指出获取该互联网资源所使用的协议,HTTP请求使用的是HTTP,除此之外,还有文件传输协议(File Transfer Protocol,FTP);在“<协议>”后面必须写上“😕/”,不能省略;“<主机>”指出万维网文档是在哪一个主机上,可以给出域名,也可以给出IP地址;“<端口>”为服务器监听的端口,HTTP默认为80端口,FTP默认为21端口;“<路径>”和“<文件名>”进一步给出资源在服务器上的位置,但是它们的名称是虚拟的,和服务器上的物理名称可能不同。
    对于动态网页,用户通常还需要给服务器提供访问动态网页的参数。因此,URL后面还可以跟上一个英文问号,问号的后面以“参数名称=参数值”的形式给出多组参数,每组之间用符号“&”分隔,称之为查询串(Query String)。具体形式为“<协议>://<主机>:<端口>/<路径>/<文件名>?<参数1>=<值1>&<参数2>=<值2>”,如https://www.baidu.com/s?×××=top1000&wd=postman&rsv_idx=2(虚拟地址)。
    打开百度浏览器,在搜索框中输入“Postman”,搜索后的界面如图1-2所示。此界面地址栏中的内容与上述虚拟地址相似。
    在这里插入图片描述
    图1-2 接口请求结果
  2. Method
    HTTP定义了与服务器交互的不同方法(Method),基本方法有4种,分别是GET、POST、PUT和DELETE。可以这样理解:URL地址用于描述一个网络上的资源,而HTTP中的GET、POST、PUT和DELETE方法对应着这个资源的“查”“改”“增”“删”操作,即GET一般用于获取、查询资源信息,而POST一般用于更新资源信息等。
    除了上面介绍的4种方法,HTTP请求还包含PATCH、COPY、HEAD、OPTIONS、LINK、UNLINK、PURGE、LOCK、UNLOCK、PROPFIND、VIEW等方法,至于这些方法的具体含义,读者可自行查阅相关资料,因为在进行接口测试的时候,遇到这些接口方法的概率非常小,而且即便遇到了,也可以借助Postman工具(后面章节将详细介绍)构造出相应请求。
    关于HTTP请求,GET方式和POST方式有什么区别呢?这一点在面试中也经常会遇到,具体如下。
    (1)提交数据的方式不同
    ① GET。请求的数据会附在URL之后(即把数据放置在HTTP协议头<requestline>中),以“?”(英文问号)分隔URL和传输数据,多个参数用“&”连接,如login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD(某个URL的其中一部分)。如果数据是英文字母、数字,则直接发送;如果是空格,则转换为“+”后发送;如果是中文、其他字符,则会用Base64加密字符串,得出“%E4%BD%A0%E5%A5%BD”后发送。
    ② POST。把提交的数据放置在HTTP包的请求体<request-body>中。
    因此,使用GET方式提交的数据会在地址栏中显示出来,而使用POST方式提交的数据不会在地址栏中显示。
    (2)传输数据的大小不同
    虽然HTTP没有对传输的数据大小进行限制,HTTP规范也没有对URL的长度进行限制,但是在实际开发中还会存在一些限制。
    ① GET。特定浏览器和服务器对URL的长度有限制,如IE对URL长度的限制是2 083Byte。其他浏览器,如FireFox,其限制取决于操作系统。因此,使用GET方式提交时,传输的数据就会受到URL长度的限制。
    ② POST。此方式由于不是通过URL传值,理论上数据不受限制。但实际上,各个Web服务器会规定对使用POST方式提交的数据大小进行限制,Apache、IIS 6.0都有各自的配置。
    (3)安全性不同
    POST方式比GET方式的安全性更高。例如,通过GET方式提交数据,用户名和密码将以明文的形式出现在URL上,由于登录页面有可能被浏览器缓存,因此,其他人通过查看浏览器的历史记录,就可能知道你的账号和密码。
  3. Headers和Body
    HTTP报文是面向文本的,报文中的每一个字段都是ASCII码串,各个字段的长度是不确定的。HTTP请求报文由请求行、头、空行和请求数据4个部分组成,请求报文的一般格式如下。
      <request-line>
      <headers>
      <blank line>
      [<request-body>]
1.2.5 HTTP响应

将HTTP请求发送到服务器后,服务器会给出相应的应答,服务器返回的应答消息称为HTTP响应。

  1. HTTP响应报文
    HTTP响应报文由3个部分组成,分别是状态行、消息报头和响应正文。HTTP响应的格式与请求的格式十分类似,具体格式如下。
      <status-line>
      <headers>
      <blank line>
      [<response-body>]
    响应报文和请求报文的区别在于第一行中用状态信息代替了请求信息。状态行通过提供一个状态码来说明所请求的资源情况。
    状态行格式为HTTP-Version Status-Code Reason-Phrase CRLF。其中,HTTPVersion表示服务器HTTP的版本;Status-Code表示服务器返回的响应状态代码;Reason-Phrase表示状态代码的文本描述;CRLF表示一个回车符和一个换行符。状态代码由3位数字组成,第一个数字定义了响应的类别,它有如下5种取值可能。
    1××:指示信息,表示请求已接收,继续处理。
    2××:成功,表示请求已被成功接收、理解和接受。
    3××:重定向,要完成请求必须进行更进一步的操作。
    4××:客户端错误,请求有语法错误或请求无法实现。
    5××:服务器错误,服务器未能实现合法的请求。
    以下对常见状态代码和状态描述进行说明。
    200 OK:客户端请求成功。
    400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
    401 Unauthorized:请求未经授权。
    403 Forbidden:服务器收到请求,但是拒绝提供服务。
    404 Not Found:请求资源不存在,如输入了错误的URL。
    500 Internal Server Error:服务器发生不可预期的错误。
    503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
    图1-3为一个HTTP响应报文示例。
    在这里插入图片描述
    图1-3 响应报文
  2. JSON
    (1)JS对象标记的定义
    JS对象标记(JavaScript Object Notation, JSON)是一种轻量级的数据交换格式。它基于ECMAScript(W3C制定的JavaScript规范)的子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言,其易于阅读和编写,同时也易于机器解析和生成,并能有效地提升网络传输效率。因此,HTTP接口响应一般为JSON格式。
    (2)JSON语法规则
    JSON语法规则包括用大括号保存对象、用键值对表示对象、用逗号分隔每个对象、用中括号保存数组。
    (3)JSON示例
      {“name”: “storm”, “age”: “32”, “sex”: “male”}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MIPI接口是移动产业处理器接口(Mobile Industry Processor Interface)的缩写,是由MIPI联盟制定的一套开放标准和规范。\[2\]它并不是一个单一的接口或协议,而是包含了一套协议和标准,以满足移动设备各种子系统的独特要求,包括图像子系统(摄像头和显示器)、存储子系统、无线子系统、电源管理子系统和低带宽子系统(音频、键盘、鼠标、蓝牙)等。\[1\] 与传统接口不同的是,MIPI接口只在需要时连接到D-PHY或者M-PHY这两个物理层之上,而不与多个物理层相关。这种设计使得MIPI接口更加灵活和高效。\[1\] 在传感器与单片机之间的接口标准,存在着多种不同的接口标准,如UART协议、I2C、I2S、SPI、SDIO等。同时,也出现了各种与摄像头传感器和显示器相关的并行接口。然而,并行接口在信号数量多、传输拥塞、费用、大小、重量和可靠性等方面存在一些不足。相比之下,MIPI接口在移动设备更加常用,因为它能够满足高速数据传输的需求,并且具有更好的可靠性和灵活性。\[3\] #### 引用[.reference_title] - *1* *2* *3* [MIPI接口资料汇总](https://blog.csdn.net/Chen_qi_hai/article/details/104751154)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值