要想知道什么是RESTful API,咱们得先知道什么是API.前端
API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不一样组成部分衔接的约定。 [1] 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工做机制的细节。(引用自百度百科)json
举个例子:好比咱们去肯德基买个汉堡,不须要知道这个汉堡是怎么作出来的,你付过钱以后就能获得一个汉堡。后端
肯德基就是一个服务器,你就是一个客户端,钱就是你向肯德基请求得到汉堡的参数。前端框架
好比,你若是要用水,你本身没必要生产水,你只须要调用水厂生产好的水就好了,水厂会把水送到你家的管道里面,你只要打开水龙头就好了,水就会出来。你打开水龙的过程就是在调用水厂的API.服务器
调用API就是一手交钱一手交货的过程,制做汉堡则是API背后的工做。网络
ps:上面是说给不懂计算机的人解释API是什么。架构
用计算机的术语来讲就是,程序使用写代码的方式访问其余人写的代码的一种渠道就是API.框架
好比你的程序想要支付宝的支付功能 ,你若是想要本身实现支付功能,你得去找银行对接啊,你得申请支付牌照,而后再写程序,一连串下来,你本身均可以成立一个金融公司了,可是如今你不想成立一个金融公司你只想用支付宝的支付功能,怎么办呢,你可使用支付宝的接口,在你的程序里面调用支付功能的时候,实际上就是请求支付宝的支付功能 ,你没必要考虑支付宝的支付功能是怎么作的,是用什么语言实现的,你只要按照规范请求支付宝的支付请求就好了。这就是调用支付宝的API.函数
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,能够下降开发的复杂性,提升系统的可伸缩性。(引用自百度百科)学习
表述性状态传递,这是个啥,谁能听得懂啊,这个中英文直译我吐了。
为何要使用RESTful结构呢
之前的网页都是前端和后端融在一块儿的,好比以前的JSP等。在以前的PC时代问题没有啥问题,可是近年来移动互联网快速发展,各类前端框架特别多,若是咱们仍是先后端不分离的话,一个是学习成本特别高,一个是代码的重复率过高致使咱们作了不少重复的东西,代码的复用率不高,用接口的方式可让代码的复用率变的高些,以下图所示
为何不用普通的接口方式,好比你要从你的网站上面获得一个城市的天气,之前有可能你得这么设计
https://xxx/getWeather?city=深圳
你这样就得传两个参数给后台,这样看起来就很臃肿。
用RESTful方式设计接口你可能会这么设计
GET https://xxx/weathers/深圳
这样只须要传一个参数给后台就能够了,这样看起来很简洁,并且咱们的URI中使用的是名词,而不是动词。经过HTTP动词来实现资源的跳转。具体实现方式下面说。
以上就是咱们为何要使用RESTful API结构的缘由。
URI里面使用的是名词并且不是动词,推荐使用复数,经过HTTP动词来实现资源的跳转。
错误的
/getOrders
listCitys
/getWeathers?city=深圳
正确的
GET /orders/1
:返回订单编号为1的订单
POST /orders
:增长一个订单
Delete /orders/1
:删除一个订单编号为1的订单
PUT /orders/1
:更新订单编号为1的订单
保证方法里面只作一件事,不会对资源状态有所改变。好比下面这样是不容许的
GET /updateOrder?id=1
使用正确的HTTP Status Code 表示返回的请求状态。好比
{"code":"200"}
以上就是如何设计一个简单的RESTful API结构系统的示例。
Tips:
先后台的数据传输能够用json,能够用xml传输,我仍是比较倾向于json传输比较方便
好比请求一个城市的温度,用xml返回结果是这样
<city>
<name>深圳</name>
<temperature>26</temperature>
<code>200</code>
</city>
复制代码
用json返回就是这样
{
"city":
{
"name":"深圳",
"temperature":"26",
"code":200
}
}
复制代码