Tạo API PHP

REST (Chuyển giao trạng thái đại diện) là một kiến ​​trúc hệ thống xác định tập hợp các phương thức để truy cập các dịch vụ web. Mục tiêu chính của REST API là tạo ra một hệ thống có thể được sử dụng bởi các ứng dụng khác nhau

API REST được tạo bằng các thao tác CRUD (Tạo, Đọc, Cập nhật, Xóa). API REST được sử dụng bằng cách thực hiện yêu cầu HTTP (GET, POST, PUT hoặc DELETE) từ phía máy khách. API được triển khai theo cách trả về phản hồi ở dạng JSON hoặc XML hoặc bất kỳ định dạng nào khác

Vì vậy, nếu bạn đang làm việc trên ứng dụng để hoạt động trên các thiết bị khác nhau như Máy tính để bàn, thiết bị di động, v.v., thì bạn có thể tạo API REST với các thao tác bắt buộc để được truy cập bởi các ứng dụng khác nhau như ứng dụng web và ứng dụng Di động

Ngoài ra, đọc

  • Xây dựng API RESTful đơn giản với Laravel
  • Tạo API REST đơn giản với Slim Framework

Trong hướng dẫn này, bạn sẽ tìm hiểu cách Tạo API RESTful đơn giản với PHP và MySQL. Chúng tôi sẽ triển khai API REST với các thao tác CRUD để tạo mục, đọc mục, cập nhật mục và xóa mục


Chúng tôi sẽ trình bày hướng dẫn này từng bước với ví dụ trực tiếp để tạo API RESTFul để thực hiện các hoạt động CRUD (Tạo, Đọc, Cập nhật, Xóa) và sử dụng API REST với yêu cầu HTTP (GET, POST, PUT hoặc DELETE) để chơi với dữ liệu vật phẩm

Vì vậy, hãy bắt đầu mã hóa. Chúng tôi sẽ có cấu trúc tệp sau cho ví dụ API REST của chúng tôi

  • nghỉ ngơi-api
    • cấu hình
      • cơ sở dữ liệu. php
    • Lớp
      • vật phẩm. php
    • mặt hàng
      • tạo ra. php
      • đọc. php
      • cập nhật. php
      • xóa bỏ. php
      • htaccess

Bước 1. Tạo bảng cơ sở dữ liệu MySQL

Vì chúng tôi sẽ tạo API REST với các hoạt động CRUD, vì vậy trước tiên chúng tôi sẽ tạo các mục bảng MySQL để lưu trữ chi tiết các mục

CREATE TABLE `items` (
  `id` int(11) NOT NULL,
  `name` varchar(256) NOT NULL,
  `description` text NOT NULL,
  `price` int(255) NOT NULL,
  `category_id` int(11) NOT NULL,
  `created` datetime NOT NULL,
  `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Chúng tôi cũng sẽ chèn một vài bản ghi để thực hiện các thao tác

INSERT INTO `items` (`id`, `name`, `description`, `price`, `category_id`, `created`, `modified`) VALUES
(1, 'LG P880 4X HD', 'My first awesome phone!', 336, 3, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(2, 'Google Nexus 4', 'The most awesome phone of 2013!', 299, 2, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(3, 'Samsung Galaxy S4', 'How about no?', 600, 3, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(6, 'Bench Shirt', 'The best shirt!', 29, 1, '2014-06-01 01:12:26', '2014-05-31 02:42:21'),
(7, 'Lenovo Laptop', 'My business partner.', 399, 2, '2014-06-01 01:13:45', '2014-05-31 02:43:39'),
(8, 'Samsung Galaxy Tab 10.1', 'Good tablet.', 259, 2, '2014-06-01 01:14:13', '2014-05-31 02:44:08'),
(9, 'Spalding Watch', 'My sports watch.', 199, 1, '2014-06-01 01:18:36', '2014-05-31 02:48:31'),
(10, 'Sony Smart Watch', 'The coolest smart watch!', 300, 2, '2014-06-06 17:10:01', '2014-06-05 18:39:51'),
(11, 'Huawei Y300', 'For testing purposes.', 100, 2, '2014-06-06 17:11:04', '2014-06-05 18:40:54'),
(12, 'Abercrombie Lake Arnold Shirt', 'Perfect as gift!', 60, 1, '2014-06-06 17:12:21', '2014-06-05 18:42:11'),
(13, 'Abercrombie Allen Brook Shirt', 'Cool red shirt!', 70, 1, '2014-06-06 17:12:59', '2014-06-05 18:42:49'),
(26, 'Another product', 'Awesome product!', 555, 2, '2014-11-22 19:07:34', '2014-11-21 21:37:34'),
(28, 'Wallet', 'You can absolutely use this one!', 799, 6, '2014-12-04 21:12:03', '2014-12-03 23:42:03'),
(31, 'Amanda Waller Shirt', 'New awesome shirt!', 333, 1, '2014-12-13 00:52:54', '2014-12-12 03:22:54'),
(42, 'Nike Shoes for Men', 'Nike Shoes', 12999, 3, '2015-12-12 06:47:08', '2015-12-12 07:17:08'),
(48, 'Bristol Shoes', 'Awesome shoes.', 999, 5, '2016-01-08 06:36:37', '2016-01-08 07:06:37'),
(60, 'Rolex Watch', 'Luxury watch.', 25000, 1, '2016-01-11 15:46:02', '2016-01-11 16:16:02');

Bước 2. Tạo kết nối cơ sở dữ liệu

Trong thư mục config, chúng ta sẽ tạo một lớp Cơ sở dữ liệu. php để tạo kết nối tới cơ sở dữ liệu MySQL


<?php
class Database{
	
	private $host  = 'localhost';
    private $user  = 'root';
    private $password   = "";
    private $database  = "phpzag_demo"; 
    
    public function getConnection(){		
		$conn = new mysqli($this->host, $this->user, $this->password, $this->database);
		if($conn->connect_error){
			die("Error failed to connect to MySQL: " . $conn->connect_error);
		} else {
			return $conn;
		}
    }
}
?>

Bước 3. Triển khai Tạo mục

Trong các mục thư mục, chúng tôi sẽ tạo một tệp tạo. php và triển khai các mục tạo chức năng để chèn bản ghi mới vào cơ sở dữ liệu. API sẽ chấp nhận các giá trị HTTP POST để tạo bản ghi. Chúng tôi sẽ tạo đối tượng của lớp Mục. php và gọi phương thức tạo () để lưu bản ghi

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
 
include_once '../config/Database.php';
include_once '../class/Items.php';
 
$database = new Database();
$db = $database->getConnection();
 
$items = new Items($db);
 
$data = json_decode(file_get_contents("php://input"));

if(!empty($data->name) && !empty($data->description) &&
!empty($data->price) && !empty($data->category_id) &&
!empty($data->created)){    

    $items->name = $data->name;
    $items->description = $data->description;
    $items->price = $data->price;
    $items->category_id = $data->category_id;	
    $items->created = date('Y-m-d H:i:s'); 
    
    if($items->create()){         
        http_response_code(201);         
        echo json_encode(array("message" => "Item was created."));
    } else{         
        http_response_code(503);        
        echo json_encode(array("message" => "Unable to create item."));
    }
}else{    
    http_response_code(400);    
    echo json_encode(array("message" => "Unable to create item. Data is incomplete."));
}
?>

Hạng mục trong lớp. php, chúng tôi sẽ triển khai phương thức tạo () để chèn các giá trị POST vào bảng cơ sở dữ liệu

<?php
function create(){
		
	$stmt = $this->conn->prepare("
		INSERT INTO ".$this->itemsTable."(`name`, `description`, `price`, `category_id`, `created`)
		VALUES(?,?,?,?,?)");
	
	$this->name = htmlspecialchars(strip_tags($this->name));
	$this->description = htmlspecialchars(strip_tags($this->description));
	$this->price = htmlspecialchars(strip_tags($this->price));
	$this->category_id = htmlspecialchars(strip_tags($this->category_id));
	$this->created = htmlspecialchars(strip_tags($this->created));
	
	
	$stmt->bind_param("ssiis", $this->name, $this->description, $this->price, $this->category_id, $this->created);
	
	if($stmt->execute()){
		return true;
	}
 
	return false;		 
}
?>

Chúng tôi sẽ kiểm tra ví dụ Tạo URL từ API REST của chúng tôi bằng cách sử dụng URL sau với Ứng dụng POSTMAN

https://www.phpzag.com/demo/rest-api/items/create

Chúng tôi sẽ POST các giá trị dữ liệu JSON sau để tạo một bản ghi mặt hàng mới

{
"name": "Usha Sewing Machine",
"description": "its best machine",
"price":"90000",
"category_id":"6",
"created": "2019-11-09 04:30:00"
}

Tạo API PHP


Bước 4. Triển khai các mục đã đọc

Trong mục thư mục, chúng ta sẽ tạo file PHP đã đọc. php và triển khai chức năng đọc các mục. Chúng tôi sẽ xử lý chức năng đọc các mục bằng phương thức HTTP GET để lấy tất cả các mục hoặc mục cụ thể. Chúng tôi sẽ tạo đối tượng của lớp Mục. php và gọi phương thức read() và trả về dữ liệu phản hồi ở định dạng JSON

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

include_once '../config/Database.php';
include_once '../class/Items.php';

$database = new Database();
$db = $database->getConnection();
 
$items = new Items($db);

$items->id = (isset($_GET['id']) && $_GET['id']) ? $_GET['id'] : '0';

$result = $items->read();

if($result->num_rows > 0){    
    $itemRecords=array();
    $itemRecords["items"]=array(); 
	while ($item = $result->fetch_assoc()) { 	
        extract($item); 
        $itemDetails=array(
            "id" => $id,
            "name" => $name,
            "description" => $description,
			"price" => $price,
            "category_id" => $category_id,            
			"created" => $created,
            "modified" => $modified			
        ); 
       array_push($itemRecords["items"], $itemDetails);
    }    
    http_response_code(200);     
    echo json_encode($itemRecords);
}else{     
    http_response_code(404);     
    echo json_encode(
        array("message" => "No item found.")
    );
} 
?>

Hạng mục trong lớp. php, chúng tôi sẽ triển khai phương thức read() để đọc các mục từ cơ sở dữ liệu

________số 8

Chúng tôi sẽ kiểm tra ví dụ URL đã đọc từ API REST của chúng tôi bằng cách sử dụng URL sau với Ứng dụng POSTMAN

https://www.phpzag.com/demo/rest-api/items/read

URL đã đọc ở trên sẽ trả về tất cả bản ghi mục ở định dạng dữ liệu JSON. Chúng tôi cần chuyển id mặt hàng cụ thể để lấy bản ghi mặt hàng đó

Tạo API PHP


Bước5. Triển khai các mục cập nhật

Trong các mục thư mục, chúng tôi sẽ tạo cập nhật tệp PHP. php và triển khai chức năng cập nhật mục bằng phương thức HTTP PUT. Chúng tôi sẽ tạo đối tượng của lớp Mục. php và gọi phương thức update() để cập nhật chi tiết các mục

INSERT INTO `items` (`id`, `name`, `description`, `price`, `category_id`, `created`, `modified`) VALUES
(1, 'LG P880 4X HD', 'My first awesome phone!', 336, 3, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(2, 'Google Nexus 4', 'The most awesome phone of 2013!', 299, 2, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(3, 'Samsung Galaxy S4', 'How about no?', 600, 3, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(6, 'Bench Shirt', 'The best shirt!', 29, 1, '2014-06-01 01:12:26', '2014-05-31 02:42:21'),
(7, 'Lenovo Laptop', 'My business partner.', 399, 2, '2014-06-01 01:13:45', '2014-05-31 02:43:39'),
(8, 'Samsung Galaxy Tab 10.1', 'Good tablet.', 259, 2, '2014-06-01 01:14:13', '2014-05-31 02:44:08'),
(9, 'Spalding Watch', 'My sports watch.', 199, 1, '2014-06-01 01:18:36', '2014-05-31 02:48:31'),
(10, 'Sony Smart Watch', 'The coolest smart watch!', 300, 2, '2014-06-06 17:10:01', '2014-06-05 18:39:51'),
(11, 'Huawei Y300', 'For testing purposes.', 100, 2, '2014-06-06 17:11:04', '2014-06-05 18:40:54'),
(12, 'Abercrombie Lake Arnold Shirt', 'Perfect as gift!', 60, 1, '2014-06-06 17:12:21', '2014-06-05 18:42:11'),
(13, 'Abercrombie Allen Brook Shirt', 'Cool red shirt!', 70, 1, '2014-06-06 17:12:59', '2014-06-05 18:42:49'),
(26, 'Another product', 'Awesome product!', 555, 2, '2014-11-22 19:07:34', '2014-11-21 21:37:34'),
(28, 'Wallet', 'You can absolutely use this one!', 799, 6, '2014-12-04 21:12:03', '2014-12-03 23:42:03'),
(31, 'Amanda Waller Shirt', 'New awesome shirt!', 333, 1, '2014-12-13 00:52:54', '2014-12-12 03:22:54'),
(42, 'Nike Shoes for Men', 'Nike Shoes', 12999, 3, '2015-12-12 06:47:08', '2015-12-12 07:17:08'),
(48, 'Bristol Shoes', 'Awesome shoes.', 999, 5, '2016-01-08 06:36:37', '2016-01-08 07:06:37'),
(60, 'Rolex Watch', 'Luxury watch.', 25000, 1, '2016-01-11 15:46:02', '2016-01-11 16:16:02');
0

Hạng mục trong lớp. php, chúng tôi sẽ triển khai phương thức update() để cập nhật chi tiết mục vào bảng cơ sở dữ liệu

INSERT INTO `items` (`id`, `name`, `description`, `price`, `category_id`, `created`, `modified`) VALUES
(1, 'LG P880 4X HD', 'My first awesome phone!', 336, 3, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(2, 'Google Nexus 4', 'The most awesome phone of 2013!', 299, 2, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(3, 'Samsung Galaxy S4', 'How about no?', 600, 3, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(6, 'Bench Shirt', 'The best shirt!', 29, 1, '2014-06-01 01:12:26', '2014-05-31 02:42:21'),
(7, 'Lenovo Laptop', 'My business partner.', 399, 2, '2014-06-01 01:13:45', '2014-05-31 02:43:39'),
(8, 'Samsung Galaxy Tab 10.1', 'Good tablet.', 259, 2, '2014-06-01 01:14:13', '2014-05-31 02:44:08'),
(9, 'Spalding Watch', 'My sports watch.', 199, 1, '2014-06-01 01:18:36', '2014-05-31 02:48:31'),
(10, 'Sony Smart Watch', 'The coolest smart watch!', 300, 2, '2014-06-06 17:10:01', '2014-06-05 18:39:51'),
(11, 'Huawei Y300', 'For testing purposes.', 100, 2, '2014-06-06 17:11:04', '2014-06-05 18:40:54'),
(12, 'Abercrombie Lake Arnold Shirt', 'Perfect as gift!', 60, 1, '2014-06-06 17:12:21', '2014-06-05 18:42:11'),
(13, 'Abercrombie Allen Brook Shirt', 'Cool red shirt!', 70, 1, '2014-06-06 17:12:59', '2014-06-05 18:42:49'),
(26, 'Another product', 'Awesome product!', 555, 2, '2014-11-22 19:07:34', '2014-11-21 21:37:34'),
(28, 'Wallet', 'You can absolutely use this one!', 799, 6, '2014-12-04 21:12:03', '2014-12-03 23:42:03'),
(31, 'Amanda Waller Shirt', 'New awesome shirt!', 333, 1, '2014-12-13 00:52:54', '2014-12-12 03:22:54'),
(42, 'Nike Shoes for Men', 'Nike Shoes', 12999, 3, '2015-12-12 06:47:08', '2015-12-12 07:17:08'),
(48, 'Bristol Shoes', 'Awesome shoes.', 999, 5, '2016-01-08 06:36:37', '2016-01-08 07:06:37'),
(60, 'Rolex Watch', 'Luxury watch.', 25000, 1, '2016-01-11 15:46:02', '2016-01-11 16:16:02');
1

Chúng tôi sẽ kiểm tra ví dụ URL cập nhật từ API REST của chúng tôi bằng cách sử dụng URL sau với Ứng dụng POSTMAN

INSERT INTO `items` (`id`, `name`, `description`, `price`, `category_id`, `created`, `modified`) VALUES
(1, 'LG P880 4X HD', 'My first awesome phone!', 336, 3, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(2, 'Google Nexus 4', 'The most awesome phone of 2013!', 299, 2, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(3, 'Samsung Galaxy S4', 'How about no?', 600, 3, '2014-06-01 01:12:26', '2014-05-31 17:42:26'),
(6, 'Bench Shirt', 'The best shirt!', 29, 1, '2014-06-01 01:12:26', '2014-05-31 02:42:21'),
(7, 'Lenovo Laptop', 'My business partner.', 399, 2, '2014-06-01 01:13:45', '2014-05-31 02:43:39'),
(8, 'Samsung Galaxy Tab 10.1', 'Good tablet.', 259, 2, '2014-06-01 01:14:13', '2014-05-31 02:44:08'),
(9, 'Spalding Watch', 'My sports watch.', 199, 1, '2014-06-01 01:18:36', '2014-05-31 02:48:31'),
(10, 'Sony Smart Watch', 'The coolest smart watch!', 300, 2, '2014-06-06 17:10:01', '2014-06-05 18:39:51'),
(11, 'Huawei Y300', 'For testing purposes.', 100, 2, '2014-06-06 17:11:04', '2014-06-05 18:40:54'),
(12, 'Abercrombie Lake Arnold Shirt', 'Perfect as gift!', 60, 1, '2014-06-06 17:12:21', '2014-06-05 18:42:11'),
(13, 'Abercrombie Allen Brook Shirt', 'Cool red shirt!', 70, 1, '2014-06-06 17:12:59', '2014-06-05 18:42:49'),
(26, 'Another product', 'Awesome product!', 555, 2, '2014-11-22 19:07:34', '2014-11-21 21:37:34'),
(28, 'Wallet', 'You can absolutely use this one!', 799, 6, '2014-12-04 21:12:03', '2014-12-03 23:42:03'),
(31, 'Amanda Waller Shirt', 'New awesome shirt!', 333, 1, '2014-12-13 00:52:54', '2014-12-12 03:22:54'),
(42, 'Nike Shoes for Men', 'Nike Shoes', 12999, 3, '2015-12-12 06:47:08', '2015-12-12 07:17:08'),
(48, 'Bristol Shoes', 'Awesome shoes.', 999, 5, '2016-01-08 06:36:37', '2016-01-08 07:06:37'),
(60, 'Rolex Watch', 'Luxury watch.', 25000, 1, '2016-01-11 15:46:02', '2016-01-11 16:16:02');
2

Chúng tôi sẽ PUT các giá trị dữ liệu JSON sau với id mặt hàng để xóa bản ghi mặt hàng. Ở đây chúng tôi đang chuyển mục id 61 để cập nhật bản ghi

API REST trong PHP là gì?

API Rest là API cho phép lập trình viên gửi và nhận thông tin từ các chương trình khác bằng các lệnh giao thức HTTP như GET và POST . Mặc dù API REST hoạt động với hầu hết các giao thức nhưng nó được thiết kế đặc biệt để truyền dữ liệu qua giao thức HTTP.

PHP có hỗ trợ API không?

PHP cung cấp các API khác nhau để kết nối với MySQL . Dưới đây chúng tôi hiển thị các API được cung cấp bởi các tiện ích mở rộng mysqli và PDO. Mỗi đoạn mã tạo một kết nối đến máy chủ MySQL đang chạy trên "ví dụ. com" sử dụng tên người dùng "user" và mật khẩu "password". Và một truy vấn được chạy để chào người dùng.

Làm cách nào để tạo POST API trong PHP?

Tạo API REST trong PHP. Để tạo API REST, hãy làm theo các bước sau. Tạo cơ sở dữ liệu và bảng với dữ liệu giả. Tạo kết nối cơ sở dữ liệu. Tạo tệp API REST. .
Sử dụng API REST trong PHP. Để sử dụng API REST, hãy làm theo các bước sau. Tạo một tệp chỉ mục với biểu mẫu HTML. Tìm nạp bản ghi thông qua CURL

Tệp PHP API là gì?

Giao diện lập trình ứng dụng hoặc API, xác định các lớp, phương thức, hàm và biến mà ứng dụng của bạn sẽ cần gọi để thực hiện tác vụ mong muốn. Trong trường hợp các ứng dụng PHP cần giao tiếp với cơ sở dữ liệu, các API cần thiết thường được hiển thị thông qua các tiện ích mở rộng PHP.