02/10/2018, 18:07

Tạo dịch vụ API trong PHP, PHP API rest

Bạn đang làm việc với nhiều thiết bị như iPhone, Android và Web rồi đi xem một bài giải thích bạn làm thế nào để phát triển một API RESTful trong PHP. Chuyển giao trạng thái biểu hiện (REST) là một hệ thống Phần mềm để phân phối dữ liệu cho các loại ứng dụng khác nhau. Một hệ thống web ...

Bạn đang làm việc với nhiều thiết bị như iPhone, Android và Web rồi đi xem một bài giải thích bạn làm thế nào để phát triển một API RESTful trong PHP. Chuyển giao trạng thái biểu hiện (REST) là một hệ thống Phần mềm để phân phối dữ liệu cho các loại ứng dụng khác nhau. Một hệ thống web service với mã phản hồi ở định dạng JSONhay XML.

Database 

Mẫu cơ sở dữ liệu table users với các cột user_id, user_fullname, user_email,user_password và user_status. 

CODE
 
 
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 Class: api.php 

Chứa mã PHP đơn giản, ở đây bạn phải sửa đổi các chi tiết cấu hình cơ sở dữ liệu nhưtên cơ sở dữ liệu, tên người dùng và mật khẩu. 


CODE
 
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(); 
?>

Login POST 

Hiển thị hồ sơ các người dùng của table users ở địa chỉ http://localhost/rest/login/ 

Tình trạng đăng nhập Restful API này làm việc với các mã trạng thái: 200 đăng nhập thành công,204 hiển thị lỗi. Để biết thêm thông tin mã trạng thái hãy xem file Rest.inc.php trong file đính kèm. 

CODE

private function login() 

// Cross validation if the request method is POST else it will return "Not Acceptable" status 
if($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); 


Users GET 

Hiển thị thông tn user từ table users. Rest API URL: http://localhost/rest/users/ 

CODE

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 
}



.htaccess code 

Rewriting mã cho URL thân thiện. Trong đoạn mã tải về bạn chỉ cần sửa đổihtaccess.txt thành .htaccess 

CODE

 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule ^(.*)$ api.php?rquest=$1 [QSA,NC,L] 

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^(.*)$ api.php [QSA,NC,L] 

RewriteCond %{REQUEST_FILENAME} -s 
RewriteRule ^(.*)$ api.php [QSA,NC,L] 
Bình luận
0