五、REST API
参考:
一、web API
1、如果一个URL返回的不是HTML,而是机器能直接解析的数据,这个URL就可以看成是一个Web API
2、以JSON格式编写的REST风格的API具有简单、易读、易用的特点。
3、通过API操作数据,可以极大地把前端和后端的代码隔离,使得后端代码易于测试,前端代码编写更简单。
4、如果我们把前端页面看作是一种用于展示的客户端,那么API就是为客户端提供数据、操作数据的接口。这种设计可以获得极高的扩展性。例如,当用户需要在手机上购买商品时,只需要开发针对iOS和Android的两个客户端,通过客户端访问API,就可以完成通过浏览器页面提供的功能,而后端代码基本无需改动。
二、REST API 规范:
1、编写REST API,实际上就是编写处理HTTP请求的async函数,不过,REST请求和普通的HTTP请求有几个特殊的地方:
(1)REST请求仍然是标准的HTTP请求,但是,除了GET请求外,POST、PUT等请求的body是JSON数据格式,请求的Content-Type为application/json;
(2)REST响应返回的结果是JSON数据格式,因此,响应的Content-Type也是application/json。
(3)URL需要容易理解
2、其实,使用REST和使用MVC是类似的,不同的是,提供REST的Controller处理函数最后不调用render()去渲染模板,而是把结果直接用JSON序列化返回给客户端。而MVC需要渲染模版,然后返回html给客户端。
3、使用REST虽然非常简单,但是,设计一套合理的REST框架却需要仔细考虑很多问题。
(1)在实际工程中,一个Web应用既有REST,还有MVC,可能还需要集成其他第三方系统。如何组织URL呢?对于较小的工程,一般就是通过固定的前缀区分。
(2)如何规范REST返回的数据?类似MVC中的分层方式,我们也可以添加一个中间层,把公共部分功能集中。
(3)错误处理:这是很常见的问题了。重点就是要客户端能够理解区分,所以错误码的设计和错误信息的返回格式都非常重要。