- 浏览: 448173 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- java (8)
- 求职&面试 (1)
- linux (33)
- windows (1)
- C++ (5)
- android (12)
- QT (1)
- 经验 (1)
- memory-leaks (1)
- Streaming&V/A (1)
- network&security (5)
- SCM (13)
- mysql (10)
- browsers (4)
- Windows APIs (2)
- opensource (1)
- pm (1)
- GDI (1)
- database (14)
- MFC (1)
- web&fronts (17)
- Tomcat (4)
- OLE (1)
- 观后感 (1)
- Production (2)
- UML (3)
- Javascript (7)
- Cloud Computing&SAAS (5)
- SoftwareEngineering (1)
- Computer&Maintenance (1)
- Web (8)
- Desgin (1)
- J2ee (10)
- mysql cluster (0)
- LB&HA (2)
- webserver (11)
- php (5)
- cas&authtication (0)
- Languages (1)
- IDEs (3)
- architecture (2)
- iOS (8)
- spring (3)
- webservices (1)
- security (1)
- MVCFrameworks (2)
- bservices (0)
- build-tools (2)
- unittest (1)
- spring-security (0)
- sphinx (2)
- hibernate (1)
- mybatis (2)
- search (0)
- nginx (2)
- design&production (2)
- DFS (0)
- algorithm (0)
- distributed&network (0)
- blogs (0)
- os&admin (0)
- fastcgi (0)
- kv-db (0)
- operation&maintenance (1)
- productions (9)
- 养生 (1)
- appserver (1)
- HTTP (2)
- test (1)
- erlang (2)
- browser (0)
- 非技术 (2)
- mobiles (2)
- cloud computing (2)
- Business (2)
- maven (1)
- python (5)
- 人生 (0)
- Cryptography (3)
- CV (0)
- cms (2)
- jqm (2)
- html (2)
- flex (1)
- redmine (1)
- iptables (1)
- groovy (1)
- scala (1)
- grails (1)
- ftp (3)
- vsftpd (2)
- lua (0)
- chroot (3)
- jailkit (3)
- UED (0)
- myeclipse (2)
- ide (2)
- eclipse (2)
最新评论
-
Nick712:
http://blog.csdn.net/victory08/ ...
处理SVN出现:Cleanup failed to process the following paths: xxx -
xs6262460:
Spring AOP根据JdbcTemplate方法名动态设置数据源 -
xhpscdx:
我的解决办法是把D:\ACRS\Projects\TAIS 下 ...
处理SVN出现:Cleanup failed to process the following paths: xxx -
hnraysir:
总结得相当不错,支持下。
使用CodeIgniter 创建 RESTful 服务 REST API【原创译文】 -
云上太阳:
这个必须评论下,间接的救过俺的命啊
解决tomcat启动报错,加强错误日志的显示:
使用CodeIgniter 创建 RESTful 服务 REST API【原创译文】
翻译之前,先简单介绍下自己的情况,避免误人子弟。。。本人英语不强(不是谦虚,真是很烂),我只是一个简简单单的CI程序猿。在现在到处都是RESTful服务的时代,我想大家都像我这样有一个疑问,怎么让CI机遇RESTful 服务工作呢。。。我上网一搜,发现有篇国外的文章非常不错,我就简单翻译下,纯粹当成备份了。。。
牛人可直接看原文,原文地址:http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/
介绍
在现在这个时代,你很容易把例如blog,CMS等等的服务整合到自己的网站里面。有一件事你也许没想过就是利用CodeIgniter去创建API接口。尝试几个RESTful服务的实现方法后,我发现过程非常麻烦,而且缺少你所期望的一些RESTful的功能。所以我自己建了一个,这个教程将告诉你怎样去利用这些代码创建属于自己的REST API,而且我将举些例子告诉你如何与自己搭建的API进行交互。
假设
- 你有自己的web 服务器,可以是本地localhost的,也可以是线上的,而且你知道如何去管理里面的问文件
- 你必须阅读过CodeIgniter from Scratch 教程(译者注:也就是懂得使用CodeIgniter框架)
- 懂得怎么设置CodeIgniter
- 懂一点点RESTful 服务知识
这个教程将分成2个部分讲。第一部分将从学习如何搭建RESTful 服务说起,然后深入,第二部分将讲如何用多种方式与自己搭建的REST API交互。
第一部分—创建REST API
第一步:建立demo
首先,你需要从Git中下载一份 codeigniter-restserver 代码回来。提取里面的代码,放置你的web server里面(译者注:下载方式如图所示,原作者的图片是Git改版前的,不适用于现在,所以本人斗胆替换掉了)
下载回来解压后,你会发现这已经是一个完整的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个情况,具体的类型如下所示:
- xml – 几乎所有的语言都能识别XML格式
- json – 对javascript和PHP APP非常有用. (译者注:其实还有一个jsonp格式)
- csv – 可以被电子表格程序打开
- html – 不解释
- php – 返回的PHP是可以被eval函数执行过的
- serialized – 序列化格式,对PHP非常有用(译者注:原文有误,记得是有个d结尾)
更RESTful的发送Content-type http 头部的方式将在后面提到。
第三步:了解代码
现在,你打开 “application/controllers/example_api.php”你立即会发现一些与正常CodeIgniter 控制器不同的地方。
REST_Controller
在MVC模式中,控制器是逻辑运算的中心。它们在用户请求或从控制器中获取数据时或者是需要输出html时,控制器的方法才会被调用。CodeIgniter 有它自己的逻辑来指挥控制器去怎么工作,但是我们现在情况和CodeIgniter不同,我们需要自己的REST_Controller 类 去指挥 相关的REST 逻辑运算,所以我们需要继承REST_Controller这个控制器。
正常情况下,我们的控制器是这样的
- <?php
- class Example_api extends Controller {
- }
现在我们需要变成这样
- <?php
- require(APPPATH’.libraries/REST_Controller.php’);
- class Example_api extends REST_Controller {
- }
(译者注:只能require REST_Controller 不能加入autoload 里面,至于为什么,擦,我也不懂)
添加方法
现在,你已经建立一个空的控制器了,那么让我们开始添加一些方法进去。一般来说,你要根据需要的资源和相应的HTTP操作来命名方法名。所以,下面的代码中你将看到有user和users 2个方法。
- <?php
- require(APPPATH’.libraries/REST_Controller.php’);
- class Example_api extends REST_Controller {
- function user_get()
- {
- // 返回关于1个用户的信息
- }
- function users_get()
- {
- // 返回所有用户的信息
- }
- }
这看起来似乎有点奇怪,但是它可以让你使用一个相同的URL 根据实际的HTTP 请求来响应不同的动作。如果某人用了你不允许的方法去调用你的API,那么它会自动返回404错误码。如果你不太懂得HTTP动作的话,让我来解释下:
GET
不解释
POST
不解释
PUT
比较少用的一个HTTP动作,大多数浏览器都不支持,PUT动作用于创建一个资源。(译者注:与delete对应)
DELETE
和PUT一样,很少用到。DELETE动作用于删除一个资源.
(译者注:其实GET,POST已经可以完全替代PUT和DELETE的功能,所以后面2个动作非常少用到)
如果我们把上面的代码,改成允许每个HTTP动作来响应请求user的资源,则,可以写成这样:
- <?php
- require(APPPATH’.libraries/REST_Controller.php’);
- class Example_api extends REST_Controller {
- function user_get()
- {
- // respond with information about a user
- // 返回一个用户信息
- }
- function user_put()
- {
- // create a new user and respond with a status/errors
- // 创建一个新用户和返回对应的状态码
- }
- function user_post()
- {
- // update an existing user and respond with a status/errors
- // 更新一个已存在的用户信息和返回对应的状态码
- }
- function user_delete()
- {
- // delete a user and respond with a status/errors
- // 删除一个用户和返回响应状态码
- }
- }
接受参数和返回数据
so,现在的控制器已经添加好相应的方法来响应不同的HTTP动作了,我们现在需要接受一些参数,然后我们可以使用CodeIgniter里的model和library的方法。正因为有这个好处,我们才使用CodeIgniter来建立我们的API,当然,我们也可以使用我们项目中已经存在的models和libraryies里的方法,而不用重新写过。
- <?php
- require(APPPATH’.libraries/REST_Controller.php’);
- class Example_api extends REST_Controller {
- function user_get()
- {
- $data = array(‘returned: ‘. $this->get(‘id’));
- $this->response($data);
- }
- function user_post()
- {
- $data = array(‘returned: ‘. $this->post(‘id’));
- $this->response($data);
- }
- function user_put()
- {
- $data = array(‘returned: ‘. $this->put(‘id’));
- $this->response($data;
- }
- function user_delete()
- {
- $data = array(‘returned: ‘. $this->delete(‘id’));
- $this->response($data);
- }
- }
$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个文件,具体位置如下:
- application/config/rest.php
- application/libraries/REST_Controller.php
把这2个文件拷入你现有的项目里面,位置不变。下面的完整项目的控制器demo
- <?php
- require(APPPATH.’/libraries/REST_Controller.php’);
- class Api extends REST_Controller
- {
- function user_get()
- {
- if(!$this->get(‘id’))
- {
- $this->response(NULL, 400);
- }
- $user = $this->user_model->get( $this->get(‘id’) );
- if($user)
- {
- $this->response($user, 200); // 200 being the HTTP response code
- }
- else
- {
- $this->response(NULL, 404);
- }
- }
- function user_post()
- {
- $result = $this->user_model->update( $this->post(‘id’), array(
- ‘name’ => $this->post(‘name’),
- ‘email’ => $this->post(‘email’)
- ));
- if($result === FALSE)
- {
- $this->response(array(‘status’ => ‘failed’));
- }
- else
- {
- $this->response(array(‘status’ => ‘success’));
- }
- }
- function users_get()
- {
- $users = $this->user_model->get_all();
- if($users)
- {
- $this->response($users, 200);
- }
- else
- {
- $this->response(NULL, 404);
- }
- }
- }
- ?>
这是一个通用型的demo,在第一个方法中,我们先把判断是否有id这个参数,如果没有就返回400状态码,如果有则继续执行,让user_model去获取user,有则返回数据,并返回200状态码,没则返回null以及404状态码。
第五步: API安全
现在,你的API已经建立好了。你需要给予相应的调用权限来保护它。设置登陆权限,用户名密码等可以打开 “application/config/rest.php”文件来修改。
- $config['rest_auth'] = ‘basic’; //设置REST权限
None
设置为None的话,所有人都可以调用这个API.
Basic
设置为Basic的话,是一个相对不安全的登录方法,它应该只用于内部/安全网络.
Digest
这是一个更安全的选项,需要加密的用户名和密码,如果你想受保护的API让有权限的人调用,使用这个选项。
- $config['rest_valid_logins'] = array(‘admin’ => ’1234′);
这个选项中,可以设置用户的账号和密码,账号是array的key,密码则是对应的value;你可以添加尽可能多的有权限调用你的API的用户进来。
(译者注:第一部分到此结束。。。有点累,第二部分下次再翻译了。。。预告一下,下一部分主要讲如何建立公开调用的REST API,例如twitter API , 新浪API 等等)
发表评论
-
小说一下我用过的PHP框架
2012-11-28 22:04 1030小说一下我用过的PHP框架 1 ... -
关于DoitPHP,ThinkPHP,Yii,CI,DooPHP等框架的性能对比测试
2012-11-28 21:10 0关于DoitPHP,ThinkPHP,Yii,CI, ... -
强烈推荐Yii开发框架
2012-11-28 21:07 0强烈推荐这个年轻的PHP开发框架,这是我接触过的各种PHP框架 ... -
基于PHP的MySQL分库程序思想
2012-10-09 11:36 950基于PHP的MySQL分库 ... -
protobuf使用总结(c++和php版本)
2012-09-05 23:59 0一、protobuf的优点 ... -
在CodeIgniter框架中使用RESTful服务
2012-09-05 23:46 0在CodeIgniter框架中使用RESTful服务 ... -
初次体验hiphop-php,转化php为C++代码。
2012-08-30 19:20 1086初次体验hiphop-php,转化php为C++代码 ... -
php和java的混合型项目建立手记
2012-08-30 17:06 851创业公司参与项目的人口众多、背景不一,目前市场上 ... -
PHP连接SQLServer2005.
2012-08-24 12:02 0为了php连接sql2005 ,我在网络上找了一大堆 ...
相关推荐
CodeIgniter 3.x Restful API库演示应用程序CodeIgniter Restful API Controller-通过令牌授权轻松构建REST API使用PHP 5.6.8 CodeIgniter 3.9 Restful API库:-http: 用于开发API的REST API调试工具 CodeIgniter...
简单的Codeigniter REST API 用于使用REST API学习基本后端开发人员的简单源代码(登录,CRUD)。 演示版 建立 下载或克隆,然后配置并导入MySQL数据库 您可以使用或其他任何东西来模拟前端 测试API 您可以通过在...
CodeIgniter 4应用程序入门 什么是CodeIgniter? CodeIgniter是一个PHP完整堆栈的Web框架,它轻巧,快速,灵活且安全。可以在找到更多信息。 该存储库包含一个可安装Composer的应用程序启动器。它是从构建的。 有关...
使用一个库,一个配置文件和一个控制器的CodeIgniter的完全RESTful服务器实现。 要求 PHP 7.2或更高版本 CodeIgniter 3.1.11+ 安装 composer require chriskacerguis/codeigniter-restserver 用法 上提供了...
CodeIgniter API控制器v.1.1.7 此扩展程序由Jeevan Lal提供支持。 档案 \application\libraries\API_Controller.php \application\helpers\api_helper.php \application\config\api.php \application\libraries\...
CodeIgniter 4应用程序入门 什么是CodeIgniter? CodeIgniter是一个PHP完整堆栈的Web框架,它轻巧,快速,灵活且安全。 可以在找到更多信息。 该存储库包含一个可安装Composer的应用程序启动器。 它是从构建的。 ...
CodeIgniter 休息服务器CodeIgniter 的完全 RESTful 服务器实现,使用一个库、一个配置文件和一个控制器。要求PHP 5.2 或更高版本CodeIgniter 2.1.0 到 3.0-dev 注意:对于 1.7.x 支持,从下载选项卡下载 v2.2安装将...
本项目"RestJWTCodeigniter3"专注于利用CodeIgniter3框架创建一个安全、高效的API,同时结合JSON Web Tokens (JWT)进行身份验证,并使用Eloquent ORM来简化数据库操作。 **CodeIgniter3框架** CodeIgniter是一款轻...
codeigniter 中文说明文档 ci中文说明文档codeigniter 用户指南 codeigniter api
使用CodeIgniter Rest Server 具有JWT身份验证的CodeIgniter Rest Server 适用于CodeIgniter后端REST API的示例 网址执行专案 或者 编辑将控制器路由到/Application/modules/api/controllers/v1/welcome.php ...
RBAC通用角色权限管理系统, 前后端分离架构, 基于 vue-element-admin 和 PHP CodeIgniter RESTful 实现 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等...
此外,还需要创建一个客户端(如`Rest_test`)来测试和消费这些REST服务。`Rest_test`控制器可以包含一个`user_list`方法,用于模拟HTTP请求并展示从`Example_api`获取的用户列表。这有助于开发者验证REST服务的正确...
paypal-codeigniter, 完整的PayPal经典API库用于 PHP PayPal库 简介PayPal类库使几乎所有的PayPal API集成起来变得很容易。包括在篓文档的所有 Web服务 中,以及自适应帐户。自适应付款。权限。发票,等等。服务器...
CodeIgniter因其简洁的API和丰富的社区支持而广受好评,无论是初学者还是经验丰富的开发者,都能从中受益。在实践中,不断探索和学习这些文档,将有助于你更高效地利用CodeIgniter来创建稳定、高性能的PHP应用程序。
【标题】"33号铺"是一个基于CodeIgniter框架和淘宝API构建的淘宝客瀑布流系统。这个项目旨在提供一个用户友好的平台,展示淘宝商品,并实现与淘宝的无缝对接,为用户提供方便的购物体验。 【核心知识点】 1. **...
- **RESTful API**:CI4支持RESTful服务,可轻松创建API接口。 - **错误和日志**:理解和利用CI4的错误处理和日志系统进行调试。 - **缓存**:使用CI4的缓存机制提升应用性能。 CodeIgniter 4是一个强大的开发...
什么是CodeIgniter CodeIgniter是一个应用程序开发框架-一个工具包-适用于使用PHP构建网站的人们。 它的目标是通过提供一组用于执行常见任务的库以及一个简单的界面和逻辑结构来访问这些库,从而使您比从头开始编写...
本教程将详细介绍如何在CodeIgniter(CI)3.0框架下实现RESTful API,并通过Python进行测试。 首先,我们需要了解CI3.0框架。CodeIgniter是一个轻量级的PHP框架,以其高效、简洁和易用性著称。在CI3.0版本中,...
codeigniter-restclient, 一个restfulweb客户端库,可以自动检测格式并请求它自己的格式 rest客户端,是一个可以以使用它的他服务/api作为 Twitter,Facebook和 Flickr,无论是 public 还是在HTTP基础文件背后。...
### 使用CodeIgniter框架快速开发PHP应用 #### CodeIgniter框架简介 CodeIgniter(简称CI)是一款基于PHP的轻量级Web应用开发框架,它旨在简化PHP开发过程中的复杂度,让开发者能够更快地构建出高效、稳定的应用...