搜索架构之道:App中的搜索系统设计与优化实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.2 网络请求

客户端与服务端的通信通常使用超文本传输协议(HTTP)实现,HTTP是一个用于传输超媒体文档(例如HTML)的应用层协议,是为网页浏览器与网页服务器之间的通信而设计的,也可以用于其他类型的请求。

iOS及Android系统都提供了用HTTP封装的API,其中,iOS系统中提供了NSURL Request、NSURLSession,Android系统提供了HttpURLConnection。

1.HTTP请求工作流程

接下来介绍HTTP请求的工作流程。在实际使用过程中,系统提供API的设计不同,使用方式也不同,网络请求的几个关键步骤如下。

1)参数设定:根据业务的需要进行HTTP请求的参数设定,如设定请求的URL、端口号、请求方式(GET、POST)、Header、Cookie、Body等信息。

2)请求发送:将客户端设定的参数以二进制数据流的方式传给服务端。

3)客户端接收服务端的响应:服务端即服务器接收到客户端的请求后,会向客户端返回响应,包括响应状态码、HTTP Header等信息。常见的状态码如下。

❑1××:信息响应,表示请求已收到,正在处理。

❑2××:成功响应,表示请求已成功完成。

❑3××:重定向,表示请求需要重定向到其他资源。

❑4××:客户端错误,表示客户端请求存在错误。

❑5××:服务端即服务器错误,表示服务端即服务器无法完成请求。

4)客户端接收服务端即服务器返回数据:如果响应数据量比较大,服务端即服务器可能会分多次发送数据,客户端需要多次接收通知。

5)客户端接收本次通信完成(或失败)通知的时候,相当于本次网络请求结束。

上述流程仅是一般情况下的HTTP请求工作流程,实际应用中可能会因网络环境、服务器配置等因素影响而有所不同。在设计和使用网络API时,需要根据具体需求和场景进行调整和优化。

2.HTTP请求参数介绍

在HTTP网络请求发出之前,需要对相关的参数进行设定,如请求的URL、端口号、请求方式、Header、Cookie、Body等。本节简单介绍URL、请求方式和Header。

1)URL:统一资源标识符,又称统一资源定位器、定位地址、URL地址,俗称网页地址或直接简称网址,是因特网上标准的资源地址,如同网络上的门牌。

2)请求方式:常用的请求方式为GET和POST,本节不作详细介绍。

3)Header:对于客户端发出的请求,经常使用的Header是Referer和User-Agent。

Referer:Referer请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用Referer请求头识别访问来源,有时以此进行统计分析、日志记录以及缓存优化等。

User-Agent(UA):请求头中包含的一组字符串,用于让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号,比如用来识别是Android平台还是iOS平台。