ThinkPHP 5 已经开始逐渐流行了,最近开始入手关于ThinkPHP5的RESTAPI用法,下面会逐渐介绍关于RESTAPI与ThinkPHP的结合,同时还会写一些关于前后端分离的实现。
什么是RESTAPI?
RESTAPI其实就是接口文档的一种表现形式,在我理解看来,就是能够让前端后端更方便的交流,因为采用这种方式,可以方便前后端分离,最后可以让前端和后端同时开发。
REST API 有几个规则,比如说尽量将api 归属于一个域名,也就说这个域名可以采用api.baidu.com,或者其他域名的形式,同时对于这个域名后面,必须要加上版本控制的信息,之所以这样做的原因,我认为是方便接口升级及迁移。同时,REST API 还规定了一些常用的方法,专有名词叫做HTTP 动词,其实就是约定俗成的描述了一些常用的方法,比如:GET,POST,HEAD,DELETE,PUT,PATCH 等,如果你觉得这些方法麻烦,那么仍然可以自己去定义,但是,官方是约定在域名中尽量用名词,而操作采用HTTP动词的形式,比如说,我要查看文章列表的接口,可以这样写:
GET http://api.xx.com/v1/article?limit=10
这个域名地址就包含了几个内容,第一个是采用GET的形式去请求接口,第二个是主域名地址是http://api.xx.com,第三个信息是版本号是v1,第四个信息是访问article的接口,第五个信息是返回十条数据。
所以,我从这一个域名就大约知道了这个接口干什么事情了,这就是REST API 接口设计思想的最大魅力。
不过我个人认为,任何理论上的需求可能在实际实现以后会有偏差,毕竟理论和实践还是需要在实际中磨合了才知道的。所以,未来我虽然大部分采用的是REST API的思想,但是也是方便我自己开发和形成一套完整的流程,尽量做了一些的变动。我主要变动的是,只是采用GET 和 POST的动词进行对接口的开发,然后在接口的里面不限制是否是名词,(主要因为本人的英语不好,所以开发了这套规则)。
当我解决完接口设计这一块的时候,有一个很哲学的问题摆在我面前,就是怎么证明我是我这个问题。这个问题说难也难,说简单也简单,就是怎么来确定请求你接口的服务器是你允许的服务器。我参考了微信等各大网站牛逼的做法,就是采用OAuth2.0的思想,所谓牛逼,说白了,就那个样。它可以有好几种形式,我主要采用的是下面的形式:
1.给允许的每一个服务器一个特定的账号密码和一套clientid和secret
2.请求接口服务器采用clientid和secret去请求接口服务器,然后服务器返回一个access_token给前端服务器
3.判断是否需要用户权限,如果需要,通过用户的账号密码和access_token请求接口服务器,返回open_id
4.然后通过open_id 去请求剩下需要用户权限的接口。
通过OAuth2.0的思想的洗礼,完善出自己的架构体系。
接下来的工作就是采用ThinkPHP5 去开发这一套代码了。
这里留一个爪子,后面开始介绍ThinkPHP 5 的 初始化!