Hướng dẫn tạo web service với PHP và MySQL
Bạn đã từng nghe về web service ? Web service là gì ? Cách hoạt động của nó như thế nào? Trong bài viết này mình sẽ giới thiệu đến các bạn về định nghĩa web service, đặc điểm của web service và hướng dẫn các bạn cách hiện thực 1 web service đơn giản, cơ bản cho những bạn mới bắt đầu tìm hiểu về web service với PHP.
1. Web services là gì ?
Web service là một tập các phương thức được gọi thực hiện từ xa thông qua một địa chỉ url. Kết quả trả về của web service thường dưới dạng json hoặc xml. Web service thường được sử dụng để tạo các ứng dụng phân tán.
2. Đặc điểm của web service
– Không phụ thuộc vào ngôn ngữ lập trình
– Có thể được truy cập từ bất cứ ứng dụng nào
– Hỗ trợ thao tác giữa các thành phần không đồng nhất
– Chi phí phát triển thấp
– Dễ bảo trì
3. Tạo web service với PHP và MySQL
Ở phần này, mình sẽ hướng dẫn các bạn cách tạo 1 web service đơn giản, có chức năng cung cấp toàn bộ danh sách user có trong database dưới dạng json và xml.
Bước 1 : Tạo một bảng là users sẽ chứa thông tin thành viên của ứng dụng web như là : username, password, name, email,…
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(30) NOT NULL, `password` varchar(30) NOT NULL, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Bạn nên insert một vài mẫu dữ liệu vào bảng users này để chúng ta có dữ liệu để test.
Bước 2 : Tạo một thư mục tên là webservice, đặt trong thư mục gốc của website. Tiếp đến trong thư mục webservice, tạo 1 file đặt tên là connection.php. File này có trách nhiệm tạo kết nối đến cơ sở dữ liệu.
<?php
$server_username = "root"; // điền username đăng nhập mysql
$server_password = ""; // điền password đăng nhập mysql
$server_host = "localhost";// điền tện host
$database = 'kungfuphp'; // tên database
// tạo biến kết nối tới database
$conn = mysqli_connect($server_host,$server_username,$server_password,$database) or die("không thể kết nối tới database");
Bước 3 : Tạo 1 file đặt tên là server.php, File này chịu trách nhiệm lấy thông tin được gửi từ client, xử lý dữ liệu và trả ra dưới dạng json hoặc XML. Nội dung của file này như sau :
<?php
if(isset($_GET["getUser"])){
// kiểm tra định dạng dữ liểu trả ra là json hay xml
$format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml';
//tạo mạng users để lưu thông tin toàn bộ user trong db
$users = array();
//gọi file kết nối db
require_once("connection.php");
//truy vấn lấy toàn bộ thông tin trong bảng users
$sql = "select * from users";
$query = mysqli_query($conn,$sql);
while ($user = mysqli_fetch_assoc($query) {
$users[] = array('user' => $user);
}
// trả ra dữ liệu dưới dạng json
if ($format == 'json') {
header('Content-type: application/json');
echo json_encode(array('users'=>$users));
}else{
// trả ra dữ liệu dưới dạng xml
header('Content-type: text/xml');
echo '<users>';
foreach($users as $index => $user) {
if(is_array($user)) {
foreach($user as $key => $value) {
echo '<',$key,'>';
if(is_array($value)) {
foreach($value as $tag => $val) {
echo '<',$tag,'>',htmlentities($val),'</',$tag,'>';
}
}
echo '</',$key,'>';
}
}
}
echo '</users>';
}
mysqli_close();
}else{
echo "Không có dữ liệu trả về";
}
Giải thích 1 tí về đoạn code trên, đoạn code trên lấy các tham số getUser, format được truyền trên url có dạng như sau :
- url lấy thông tin user trả về dưới dạng json
http://localhost/webservice?getUser&format=json
- user lấy thông tin user trả về dưới dạng xml
http://localhost/webservice?getUser&format=xml
Với các tham số được truyền vào này, service sẽ thực thi việc truy vấn dữ liệu trong db, trả ra dữ liệu dưới dạng json hoặc xml toàn bộ thông tin user có trong db.
Gợi ý: Bạn đang quan tâm đến Bitcoin? Tìm hiểu ngay Bitcoin Toàn Tập Cho Người Mới nhé!
Chẳng hạn với json, dữ liệu trả ra sẽ có định dạng như sau :
{"users":[{"user":{"id":"1",'username":"teo123","password":"123456",name :"Nguyen Van Teo","email":"teo123@gmail.com"}},{"user":{"id":"2",'username":"ti123","password":"123456",name :"Nguyen Van Ti","email":"ti123@gmail.com"}},{"user":{"id":"3",'username":"tam123","password":"123456",name :"Nguyen Van Tam","email":"tam123@gmail.com"}}}
Còn đối với xml dữ liệu trả ra sẽ như sau :
<users> <user> <id>1</id> <username>teo123</username> <password>123456</password> <name>Nguyen Van Teo</name> <email>teo123@gmail.com</email> </user> <user> <id>2</id> <username>ti123</username> <password>123456</password> <name>Nguyen Van Ti</name> <email>ti123@gmail.com</email> </user> <user> <id>3</id> <username>tam123</username> <password>123456</password> <name>Nguyen Van Tam</name> <email>tam123@gmail.com</email> </user> </users>
Bước 5 : Tùy thuộc vào mục đích sử dụng, dữ liệu trả về sẽ được xử lý khác nhau theo ý muốn người sử dụng. Để có thể lấy được dữ liệu từ service, ta sẽ dùng phương thức curl hoặc file_get_contents.
Tạo một file là client.php, đặt trong thư mục webservice. Nội dung file này đơn giản chỉ là lấy dữ liệu trả về từ webservice thông qua url và xử lý dữ liệu đó theo 1 mục đích nào đó. Đoạn code trong client.php sẽ như sau :
//Lấy dữ liệu trả về dạng xml
$du_lieu_tra_ve_xml = file_get_contents("http://localhost/webservice?getUser&format=xml");
//Lấy dữ liệu trả về dạng json
$du_lieu_tra_ve_json = file_get_contents("http://localhost/webservice?getUser&format=json");
//Code Xử lý dữ liệu trả về theo ý của bạn ...
4. Tổng kết
Từ ví dụ ở mục 3, các bạn chỉ cần hiểu đơn giản webservice chỉ là 1 dịch vụ, mà tại đó nó nhận yêu cầu thông qua url và các tham số, sau đó nó sẽ xử lý trả về dữ liệu dưới định dạng xml hoặc json theo yêu cầu của người dùng dịch vụ. Xây dựng webservice rất có lợi vì định dạng json hoặc xml là định dạng dữ liệu có thể sử dụng trên nhiều nền tảng như di động (android, ios,…), website (php, jsp,…)
Nguồn : kungfuphp.com


rất hữu ích và dễ hiểu cho người mới .
cám ơn mod
Cám ơn bài viết bổ ích của bạn.
Cám ơn bạn, chúc bạn ngày mới tốt lành
khi xuất ra xml bị lỗi recor đầu tiên
cụ thể là dòng nào bạn ?
Chào bạn?
Mình đọc đã đọc bài của bạn thấy rất hay nhưng đây không phải là webservice thì phải :D, đây mới là trả ra file JSON. Vì mình cũng đang kiếm tài liệu xây dựng webservice bằng PHP và tham khảo một vài diễn đàn thấy đa số dùng gì là Restful, SOAP,…
p/s: Mình mới tìm hiểu nên chưa được rõ
Cám ơn bạn, có thể gọi đây là web service thì chưa chính xác hoàn toàn, nhưng nó cũng cung cấp một kiến thức cơ bản cho những bạn mới bắt đầu hiểu về nền tảng của web service. Còn nâng cấp cao hơn đó sẽ là 1 hệ thống bảo mật,…như Soap,…
mình mới học lập trình php. cho mình hỏi để chạy file client.php thì url là gì.Mình chạy nó toàn chạy vào file index.php thôi.tks
bạn có thể chạy file client theo đường dẫn sau : http://localhost/webservice/client.php. Nếu bạn mới học lập trình thì bài này có 1 tí nâng cao so với bạn. Vì mục đích của bài này là mình muốn demo cho các bạn về cơ chế webservice trong php và mysql. Bạn theo lộ trình hoc php này : https://kungfuphp.com/lo-trinh-hoc-php . Mình đã soạn sẵn từ cơ bản đến nâng cao. Học từ từ rồi bạn sẽ hiểu rõ hơn nhé 🙂