主页 > 前端 > javascript >
来源:自学PHP网 时间:2014-09-19 14:47 作者: 阅读:次
[导读] 本文章来给各位介绍使用CodeIgniter 创建 RESTful 服务 REST API,希望对大家有所帮助了。...
介绍
第一部分—创建REST API 第一步:建立demo 下载回来解压后,你会发现这已经是一个完整的CodeIgniter框架。这样可以让大家完整的使用这个 REST demo,而不用添加进自己的文件里才能使用。
打开“application/config/config.php” ,根据自己的情况设置base_url。。(译者注:其实就是CI的根目录的地址,这个我想用过CI的都懂吧。如果你真的什么都不懂,那么你把下载回来后的文件解压,然后重命名为restserver,把整个文件夹丢到WWW根目录下,把base_url设置成如图所示)
第二步:了解URL
根据第一步的情况,解压好文件,配置好base_url,我们就已经可以访问已经配置好RESTful的CodeIgniter框架了。。打开你的web server,输入你刚才设置的base_url地址,看看是不是已经可以正常访问啦。。
下面讲解下RESTful 的URL结构。基本情况如图所示:
(译者注:这里的情况我就不多说了,只是说下RESTful的CodeIgniter与正常的情况下URL结构的差异,前面的传值和URL结构都和正常情况下一致,就是在最后添加了一个参数format,这里可以定义返回的类型)
关于format的类型情况,可以看下图
为了让API提供更丰富的格式选择。。。format类型不仅仅只有上图所列举的3个情况,具体的类型如下所示:
更RESTful的发送Content-type http 头部的方式将在后面提到。
第三步:了解代码
现在,你打开 “application/controllers/example_api.php”你立即会发现一些与正常CodeIgniter 控制器不同的地方。
REST_Controller
在MVC模式中,控制器是逻辑运算的中心。它们在用户请求或从控制器中获取数据时或者是需要输出html时,控制器的方法才会被调用。CodeIgniter 有它自己的逻辑来指挥控制器去怎么工作,但是我们现在情况和CodeIgniter不同,我们需要自己的REST_Controller 类 去指挥 相关的REST 逻辑运算,所以我们需要继承REST_Controller这个控制器。
正常情况下,我们的控制器是这样的
现在我们需要变成这样
(译者注:只能require REST_Controller 不能加入autoload 里面,至于为什么,擦,我也不懂)
添加方法
现在,你已经建立一个空的控制器了,那么让我们开始添加一些方法进去。一般来说,你要根据需要的资源和相应的HTTP操作来命名方法名。所以,下面的代码中你将看到有user和users 2个方法。
这看起来似乎有点奇怪,但是它可以让你使用一个相同的URL 根据实际的HTTP 请求来响应不同的动作。如果某人用了你不允许的方法去调用你的API,那么它会自动返回404错误码。如果你不太懂得HTTP动作的话,让我来解释下:
GET
不解释 POST
不解释
PUT
比较少用的一个HTTP动作,大多数浏览器都不支持,PUT动作用于创建一个资源。(译者注:与delete对应) DELETE
和PUT一样,很少用到。DELETE动作用于删除一个资源. (译者注:其实GET,POST已经可以完全替代PUT和DELETE的功能,所以后面2个动作非常少用到) 如果我们把上面的代码,改成允许每个HTTP动作来响应请求user的资源,则,可以写成这样:
接受参数和返回数据
so,现在的控制器已经添加好相应的方法来响应不同的HTTP动作了,我们现在需要接受一些参数,然后我们可以使用CodeIgniter里的model和library的方法。正因为有这个好处,我们才使用CodeIgniter来建立我们的API,当然,我们也可以使用我们项目中已经存在的models和libraryies里的方法,而不用重新写过。
$this->get()
用来接收GET参数
$this->post()
是CodeIgniter内置方法$this->input->post() 的别名,用来接收$_POST参数, 受到XSS保护。
$this->put()
接收put参数 $this->delete()
接收delete参数
$this->response()
发送数据给浏览器,数据格式是什么,默认是XML格式,你可以设置返回的HTTP状态码,例如用户这个例子,加入ID不存在,你可以使用 $this->response(array(‘error’ => ‘User not found.’), 404);
第四步:使用你的Models
从开始到现在,一个简单的DEMO API已经可以正常运行了。所以,下一步让我们用我们自己的Models来运行这些API
从下载回来的CodeIgniter中找到上图显示的2个文件,具体位置如下:
把这2个文件拷入你现有的项目里面,位置不变。下面的完整项目的控制器demo
这是一个通用型的demo,在第一个方法中,我们先把判断是否有id这个参数,如果没有就返回400状态码,如果有则继续执行,让user_model去获取user,有则返回数据,并返回200状态码,没则返回null以及404状态码。
第五步: API安全
现在,你的API已经建立好了。你需要给予相应的调用权限来保护它。设置登陆权限,用户名密码等可以打开 “application/config/rest.php”文件来修改。
None
设置为None的话,所有人都可以调用这个API. Basic
设置为Basic的话,是一个相对不安全的登录方法,它应该只用于内部/安全网络. Digest
这是一个更安全的选项,需要加密的用户名和密码,如果你想受保护的API让有权限的人调用,使用这个选项。
这个选项中,可以设置用户的账号和密码,账号是array的key,密码则是对应的value;你可以添加尽可能多的有权限调用你的API的用户进来。
(译者注:第一部分到此结束。。。有点累,第二部分下次再翻译了。。。预告一下,下一部分主要讲如何建立公开调用的REST API,例如twitter API , 新浪API 等等
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com