Tạo api trong php & mysql

Tôi vừa ra mắt DavisonPro. nhà phát triển. Một blog độc lập nơi tôi viết về Javascript, phát triển Web và phát triển phần mềm

Chúng tôi sẽ tạo phiên bản nâng cao của Cách tạo API REST đơn giản trong PHP? . bởi Codeofaninja. com

Đây là một cách nâng cao để cấu trúc một api và tất cả những gì chúng ta sẽ làm trong bài viết này là xem qua các tệp chính trong…

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

Tạo api trong php & mysql


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

Tạo api trong php & mysql


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

Làm cách nào để tạo yêu cầu API trong PHP?

Để bắt đầu với API này, chúng ta cần gọi điểm cuối Đăng ký. .
Thực hiện một yêu cầu POST. Bây giờ chúng ta chuyển sang bước đầu tiên và tạo một bộ sưu tập dữ liệu bằng cách sử dụng điểm cuối Tạo bộ sưu tập. .
Thực hiện yêu cầu NHẬN. .
Thực hiện yêu cầu PUT. .
Phương thức XÓA. .
Lặp lại yêu cầu GET và kiểm tra xem dữ liệu có thực sự bị xóa không

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

Tệp PHP được giải thích. Chuyển đổi yêu cầu thành đối tượng, sử dụng hàm PHP json_decode() . Truy cập cơ sở dữ liệu và điền vào một mảng với dữ liệu được yêu cầu. Thêm mảng vào một đối tượng và trả về đối tượng dưới dạng JSON bằng hàm json_encode().

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

API REST được tạo bằng các thao tác CRUD (Tạo, Đọc, Cập nhật, Xóa). .
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

Làm cách nào để tạo API bằng PHP và MySQL?

Tạo PHP 8 CRUD REST API bằng MySQL & PHP PDO .
API (Giao diện lập trình ứng dụng)
API REST là gì?
Cấu trúc tệp PHP REST API
Cấu hình cơ sở dữ liệu MySQL
Tạo kết nối cơ sở dữ liệu MySQL
Tạo lớp PHP
Tìm nạp bản ghi bảng MySQL
Nhận một hàng từ cơ sở dữ liệu MySQL qua API PHP