一、为何要开发Web接口

总的来说,就是当开发大型B/S架构的程序时,前后端分离,当前端想要调用后台程序,只需要调用接口即可。这样带来的好处就是:

  1. 后端不必精通前端技术(HTML5/JavaScript/CSS),只专注于数据的处理并提供Web接口即可;

  2. 前端的专业性越来越高,通过调用Web接口获取数据,从而专注于数据展示和页面交互设计;

  3. Web接口的应用范围更加广泛,由后端开发的接口既可以提供给Web页面调用,也可以提供移动APP调用等;

 

二、什么是Web接口

通过数据传输协议(eg:HTTP/SOAP……)传输一定格式(eg:XML/JSON/CSV……)数据的接口。

在当前Web接口中,HTTP协议+JSON数据格式,是目前最流行的两个接口技术。

1.HTTP

HTTP(Hyper Text Transfer Protocol,超文本传输协议)

  • 主要特点:

    1. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间;

    2. 媒体独立:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端和服务器指定使用适合的MIME-type内容类型;

    3. 无状态:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,如果服务器不需要先前的信息,那么它的应答就比较快。

  • HTTP请求方法:

  • 状态响应码:

当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(Server Header)用以响应浏览器的请求。

  • HTTP状态码分为五类:

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

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

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

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

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

  • 常见状态代码和状态说明:

200 OK: 请求成功,一般用于GET或POST请求。

302 Fund: 临时移动,资源只是临时被移动,客户端应继续使用原有URI。

400 Bad Request: 客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized: 请求要求用户的身份认证。

403 Forbidden: 服务器理解请求客户端的请求,但是拒绝执行此请求。

404 Not Found: 服务器无法根据客户端的请求找到资源。

500 Internal Server Error: 服务器内部错误,无法完成请求。

503 Server Unavailable: 由于超载或系统维护,服务器暂时无法处理客户端请求。

  • 请求头信息与响应头信息:

    • Content-Type:表示后面的文档属于哪种MIME类型。

    • Date:当前的GMT(国际时间)。

    • Server:包含了服务器用来处理请求的软件信息。

    • X-Frame-Options:用来给浏览器指示允许一个页面可否在<frame>、<iframe>或<object>中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,从而避免了点击劫持(click jacking)的攻击。

    • Accept:浏览器可接受的MIME类型。

    • Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。

    • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时会用到。

    • Connection:表示是否需要持久连接,从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性。

    • Host:初始URL中的主机和端口,它通常是从HTTP URL中提取出来的。

    • User-Agent:请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。

    • 请求头信息:请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息,常用的请求报头如下:

    • 响应头信息:响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息,常用的响应报头如下:

2.JSON格式

JSON:JavaScript Object Notation,即JavaScript对象表示法。

JSON解析器和JSON库支持不同的编程语言,JSON具有自我描述性,很容易理解。

JSON语法是JavaScript对象表示法语法的子集:

  • 数据在名称/值对中。

  • 数据由逗号分隔。

  • 花括号保存对象。

  • 方括号保存数组。