Api còn lại trong php là gì?

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
    • Tầng lớp
      • vật phẩm. php
    • mặt hàng
      • tạo nên. 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


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

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

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"
}

Api còn lại trong php là gì?


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

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 đó

Api còn lại trong php là gì?


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

Sự khác biệt giữa API và API REST trong PHP là gì?

Mục tiêu chính của API là chuẩn hóa việc trao đổi dữ liệu giữa các dịch vụ web. Tùy thuộc vào loại API, sự lựa chọn giao thức thay đổi. Mặt khác, REST API là một kiểu kiến ​​trúc để xây dựng các dịch vụ web tương tác qua giao thức HTTP .

API REST có nghĩa là gì?

RESTful API là giao diện mà hai hệ thống máy tính sử dụng để trao đổi thông tin một cách an toàn qua internet . Hầu hết các ứng dụng kinh doanh phải giao tiếp với các ứng dụng nội bộ và bên thứ ba khác để thực hiện các tác vụ khác nhau.

PHP có tốt cho API REST không?

Vì PHP rõ ràng có thể xử lý các yêu cầu HTTP nên nó có mọi thứ bạn cần để xây dựng API RESTful . Toàn bộ quan điểm của các khung là xử lý các tác vụ phổ biến và những thứ tẻ nhạt khác. API REST thường được xây dựng bằng PHP, vì vậy có rất nhiều khung công tác tồn tại.

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

Bước 1. Tạo bảng cơ sở dữ liệu MySQL. .
Bước 2. Tạo kết nối cơ sở dữ liệu. .
Bước 3. Triển khai Tạo mục. .
Bước 4. Triển khai các mục đã đọc. .
Bước5. Triển khai các mục cập nhật. .
Bước 6. Thực hiện Xóa mục. .
Bước7. Tạo các URL yêu cầu thân thiện với SEO của API REST