REST API示例
来源:互联网 发布:it专业学校排名 编辑:程序博客网 时间:2024/05/16 14:20
如果你现在正使用iphone、Android以及Web等多种平台工作,请看一下这篇文章,它会告诉你如何使用PHP创建RESTful API。Representational state transfer (REST) 是一个用于向不同应用分发数据的软件系统。Web服务系统会以JSON或者XML方式响应状态码。
数据库
数据库表users包含了user_id, user_fullname, user_email, user_password 和 user_status字段,十分简单。
CREATE TABLE IF NOT EXISTS `users`( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_fullname` varchar(25) NOT NULL, `user_email` varchar(50) NOT NULL, `user_password` varchar(50) NOT NULL, `user_status` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Rest API类:api.php
代码十分简单,你需要修改数据库配置信息,如数据库名、数据库账户以及密码。require_once("Rest.inc.php"); class API extends REST{public $data = "";const DB_SERVER = "localhost"; const DB_USER = "Database_Username"; const DB_PASSWORD = "Database_Password"; const DB = "Database_Name"; private $db = NULL; public function __construct(){ parent::__construct();// Init parent contructor $this->dbConnect();// Initiate Database connection } //Database connection private function dbConnect(){ $this->db = mysql_connect(self::DB_SERVER,self::DB_USER,self::DB_PASSWORD); if($this->db) mysql_select_db(self::DB,$this->db); } //Public method for access api. //This method dynmically call the method based on the query string public function processApi(){ $func = strtolower(trim(str_replace("/","",$_REQUEST['rquest']))); if((int)method_exists($this,$func) > 0) $this->$func(); else $this->response('',404); // If the method not exist with in this class, response would be "Page not found". } private function login(){ .............. } private function users(){ .............. } private function deleteUser(){ ............. } //Encode array into JSON private function json($data){ if(is_array($data)){ return json_encode($data); } }}
// Initiiate Library $api = new API; $api->processApi();
提交登陆
通过访问REST API地址http://localhost/rest/login/ 显示从users表中查询出的用户数据。Restful API 的登录状态是根据状态码工作的。如果状态码为200,则登陆成功;否则状态码为204,会显示失败信息。更多的状态码信息请查看示例文件中的Rest.inc.php。private function login(){// Cross validation if the request method is POST else it will return "Not Acceptable" statusif($this->get_request_method() != "POST"){ $this->response('',406); }$email = $this->_request['email']; $password = $this->_request['pwd']; // Input validations if(!empty($email) and !empty($password)){ if(filter_var($email, FILTER_VALIDATE_EMAIL)){ $sql = mysql_query("SELECT user_id, user_fullname, user_email FROM users WHERE user_email = '$email' AND user_password = '".md5($password)."' LIMIT 1", $this->db); if(mysql_num_rows($sql) > 0){ $result = mysql_fetch_array($sql,MYSQL_ASSOC); // If success everythig is good send header as "OK" and user details $this->response($this->json($result), 200); } $this->response('', 204); // If no records "No Content" status }} // If invalid inputs "Bad Request" status message and reason $error = array('status' => "Failed", "msg" => "Invalid Email address or Password"); $this->response($this->json($error), 400); }
获取用户信息
通过访问REST API 地址http://localhost/rest/users/ 获取用户的信息。
private function users(){ // Cross validation if the request method is GET else it will return "Not Acceptable" status if($this->get_request_method() != "GET"){ $this->response('',406); } $sql = mysql_query("SELECT user_id, user_fullname, user_email FROM users WHERE user_status = 1", $this->db); if(mysql_num_rows($sql) > 0){ $result = array(); while($rlt = mysql_fetch_array($sql,MYSQL_ASSOC)){ $result[] = $rlt; } // If success everythig is good send header as "OK" and return list of users in JSON format $this->response($this->json($result), 200); } $this->response('',204); // If no records "No Content" status}
删除用户信息
根据user_id删除特定用户的信息,只需要访问REST API地址http://localhost/rest/deleteUser/
private function deleteUser(){ if($this->get_request_method() != "DELETE"){ $this->response('',406); } $id = (int)$this->_request['id']; if($id > 0){ mysql_query("DELETE FROM users WHERE user_id = $id"); $success = array('status' => "Success", "msg" => "Successfully one record deleted."); $this->response($this->json($success),200); }else{ $this->response('',204); // If no records "No Content" status }}
Chrome拓展
测试PHP restful API 响应的一个chrome的插件为Advanced REST client Application
.htaccess code
使用.htaccess使URL更加友好。在demo示例中修改htaccess.txt to .htaccess。
<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-sRewriteRule ^(.*)$ api.php?rquest=$1 [QSA,NC,L] RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^(.*)$ api.php [QSA,NC,L] RewriteCond %{REQUEST_FILENAME} -s RewriteRule ^(.*)$ api.php [QSA,NC,L]</IfModule>
0 0
- REST API示例
- PHP教程:REST API示例
- 编译c++ Rest api示例
- openstack rest api 调用示例
- SharePoint 2013 Search REST API 使用示例
- RYU REST API学习-调用示例
- rest示例(巴士电台接口API REST版)
- Ryu基本操作的REST API调用示例
- 【ajax】jquery ajax 对接 rest api 接口示例
- Ryu基本操作的REST API调用示例
- REST API
- REST api
- rest api
- REST API
- REST API
- Rest API
- API&REST API
- 示例:创建REST SOE
- word2013怎么去掉所有文字下面的波浪线
- springmvc中的resolveView(视图解析器)
- 排序
- 基于docker的虚拟化学习——研究点——20170112
- 说说系统分析师考试(从考试介绍到考试心得)
- REST API示例
- Struts1 标签
- 输入框只能输入数字和小数点
- UBUNTU 优麒麟 16.04 上面samba的配置
- OJ 1029: 多位数的处理
- hdu 1276 士兵队列训练问题(水题)
- 常见的http状态(404 304等)
- 计算机网络五层(七层)协议
- 系统分析师零散知识点