Trong hướng dẫn này, chúng ta sẽ tạo một dịch vụ web RESTful bằng PHP để thực hiện các thao tác CRUD. Trong các hướng dẫn trước, chúng ta đã xem các ví dụ về MySQL CRUD và để tạo dịch vụ web RESTful bằng PHP
Trong hướng dẫn này là một phần của loạt bài API REST, chúng ta hãy tìm hiểu về cách cung cấp API REST đơn giản cho các hoạt động CRUD [Tạo, Đọc, Cập nhật và Xóa]. Chúng tôi sẽ không sử dụng bất kỳ khung nào làm phụ thuộc, việc triển khai hoàn chỉnh sẽ sử dụng PHP lõi đơn giản
Hãy để chúng tôi xem về các quy ước tôi đã sử dụng trong ví dụ này. Các hành động ĐỌC và XÓA được thực thi bằng cách gửi từ khóa hành động trong URL và được phân tích cú pháp bằng phương thức GET
Trong hướng dẫn REST Search, chúng tôi đã sử dụng phương pháp này để gửi từ khóa tìm kiếm dưới dạng một tham số truy vấn trong URL được tìm kiếm. Hành động THÊM và CẬP NHẬT được gọi bằng cách gửi dữ liệu yêu cầu bằng phương thức POST
Triển khai tạo và cập nhật API REST
Các yêu cầu TẠO và CẬP NHẬT được gửi cùng với các giá trị đã đăng. URL yêu cầu CẬP NHẬT sẽ chứa id của một hàng cụ thể sẽ được cập nhật
Sau khi nhận được yêu cầu này, dịch vụ REST CRUD sẽ gọi lớp miền để thực hiện thao tác chèn cơ sở dữ liệu. Lớp miền sẽ tạo truy vấn chèn bằng các giá trị đã đăng. Hình dưới đây cho thấy cách ĐĂNG dữ liệu cho yêu cầu TẠO hoặc CẬP NHẬT
Tôi đang sử dụng plugin Google Chrome “Advanced REST Client” để kiểm tra API REST
Xóa bằng API REST
URL yêu cầu XÓA sẽ giống với URL CHỈNH SỬA. ID bản ghi sẽ bị xóa phải được chuyển vào URL Sau khi xóa, phản hồi API sẽ giống như được hiển thị bên dưới
Lớp miền được sử dụng cho ví dụ CRUD này
Đoạn mã sau hiển thị lớp Miền di động có chứa chức năng thực hiện các thao tác CRUD cơ sở dữ liệu. Các chức năng này được gọi bởi lớp trình xử lý REST dựa trên yêu cầu được gửi từ máy khách
Các hàm CRUD của lớp miền sẽ trả về phản hồi mảng cho trình xử lý REST được mã hóa dưới dạng định dạng JSON
REST đã trở thành tiêu chuẩn thực tế khi nói đến việc hiển thị dữ liệu thông qua API và xây dựng các dịch vụ web. Trên thực tế, hầu hết các ứng dụng web ngày nay đều truy cập và hiển thị dữ liệu thông qua API REST. Với sự phổ biến của các khung giao diện người dùng có thể sử dụng API REST một cách dễ dàng, sẽ luôn là một điểm cộng cho bạn nếu ứng dụng web của bạn sử dụng API REST
Trong bài viết này, chúng ta sẽ xây dựng một ứng dụng demo đơn giản, cho phép bạn tìm nạp danh sách người dùng từ cơ sở dữ liệu MySQL thông qua một điểm cuối REST
Thiết lập bộ xương
Trong phần này, chúng ta sẽ nhanh chóng đi qua cấu trúc dự án
Hãy cùng xem cấu trúc sau
1
├── Controller
2
│ └── Api
3
│ ├── BaseController.php
4
│ └── UserController.php_______8
├── inc
├── Controller0
├── Controller1
├── Controller2
├── Controller3
├── Controller4
├── Controller5
├── Controller6
├── Controller7
├── Controller8
├── Controller9
20
21
Hãy cố gắng hiểu cấu trúc dự án
- mục lục. php. điểm vào của ứng dụng của chúng tôi. Nó sẽ hoạt động như một bộ điều khiển phía trước của ứng dụng của chúng tôi
- inc/config. php. giữ thông tin cấu hình của ứng dụng của chúng tôi. Chủ yếu, nó sẽ giữ thông tin đăng nhập cơ sở dữ liệu
- inc/bootstrap. php. được sử dụng để khởi động ứng dụng của chúng tôi bằng cách bao gồm các tệp cần thiết
- Mô hình/Cơ sở dữ liệu. php. lớp truy cập cơ sở dữ liệu sẽ được sử dụng để tương tác với cơ sở dữ liệu MySQL bên dưới
- Người mẫu/Người dùngMô hình. php. tệp mô hình
3
62 thực hiện các phương thức cần thiết để tương tác với bảng người dùng trong cơ sở dữ liệu MySQL - Bộ điều khiển/Api/Bộ điều khiển cơ sở. php. một tệp điều khiển cơ sở chứa các phương thức tiện ích phổ biến
- Bộ điều khiển/Api/UserController. php. tệp bộ điều khiển
3
62 chứa mã ứng dụng cần thiết để giải trí các cuộc gọi API REST
Vì vậy, đó là thiết lập cơ bản mà chúng ta sẽ thực hiện trong phần còn lại của bài viết
Tạo một cơ sở dữ liệu và các lớp mô hình
Trong phần này, chúng ta sẽ tạo cơ sở dữ liệu và bảng người dùng. Chúng tôi cũng sẽ tạo các lớp mô hình cần thiết sẽ được sử dụng để tìm nạp người dùng từ cơ sở dữ liệu
Tạo cơ sở dữ liệu và bảng người dùng
Tạo cơ sở dữ liệu
364 bằng cách thực hiện lệnh sau trong thiết bị đầu cuối MySQL của bạn. [Truy cập phần này bằng lệnh
365 từ dòng lệnh. ]
1
23
Bạn cũng có thể sử dụng một công cụ như phpMyAdmin nếu bạn thích làm việc với cơ sở dữ liệu của mình theo cách đó
Khi cơ sở dữ liệu
364 được tạo, hãy tiếp tục và tạo bảng
367 bằng cách chạy các câu lệnh sau
1
25
2
27
3
29
4_______31
5
│ └── Api3
├── Controller0
│ └── Api5
├── Controller2
│ └── Api7
├── Controller4
│ └── Api9
Điều đó sẽ tạo bảng
367 trong cơ sở dữ liệu
364. Bạn cũng sẽ muốn điền vào bảng này một vài bản ghi giả cho mục đích thử nghiệm. Chèn một vài bản ghi và bạn đã sẵn sàng
Tạo các lớp mô hình
Trong phần này, chúng ta sẽ tạo các lớp mô hình cần thiết
Tạo Mô hình/Cơ sở dữ liệu. tệp php với nội dung sau
1
31
2
33
3
35
4
37
5
├── Controller0
│ ├── BaseController.php0
├── Controller2
│ ├── BaseController.php2
├── Controller4
│ ├── BaseController.php4
├── Controller6
│ ├── BaseController.php6
├── Controller8
│ ├── BaseController.php8
20
40
41
42
43
44
45
46
47
48
49
│ └── UserController.php0
│ └── UserController.php1
│ └── UserController.php2
│ └── UserController.php3
│ └── UserController.php4
│ └── UserController.php5
│ └── UserController.php6
│ ├── BaseController.php2
│ └── UserController.php8
│ ├── BaseController.php4
50
51
52
53
54
55
56
57
58
59
├── inc0
├── inc1
├── inc2
├── inc3
├── inc4
├── inc5
├── inc6
├── inc7
│ └── UserController.php2
├── inc9
├── Controller00
├── Controller01
├── Controller02
│ ├── BaseController.php2
├── Controller04
│ ├── BaseController.php4
├── Controller06
├── Controller07
├── Controller08
├── Controller09
├── Controller10
├── Controller11
├── Controller12
├── Controller13
44
├── Controller15
├── Controller16
├── Controller17
├── Controller18
├── Controller19
├── Controller20
44
├── Controller22
├── Controller23
├── Controller24
├── Controller25
├── Controller26
├── Controller27
├── Controller28
├── inc0
├── Controller30
├── inc2
├── Controller32
├── Controller33
├── Controller34
│ └── UserController.php2
├── Controller36_____
Đây là lớp tầng truy cập cơ sở dữ liệu, lớp này cho phép chúng ta thiết lập kết nối đến cơ sở dữ liệu MySQL. Ngoài thiết lập kết nối, nó còn chứa các phương thức chung như
370 và
371 cho phép chúng tôi chọn các bản ghi từ cơ sở dữ liệu. Chúng tôi sẽ không sử dụng trực tiếp lớp
372;
Tiếp theo, hãy tạo Model/UserModel. lớp php với các nội dung sau
1
31
2
├── Controller41
3
4
├── Controller44
5
35
├── Controller0
├── Controller48
├── Controller2
│ ├── BaseController.php2
├── Controller4
├── Controller52
├── Controller6
│ └── UserController.php2
├── Controller8
├── Controller37
Điều quan trọng cần lưu ý là lớp
374 mở rộng lớp
372
Ngoài ra, nó còn chứa phương thức
376, cho phép chúng ta chọn người dùng từ cơ sở dữ liệu MySQL. Bắt buộc phải chuyển tham số
377 để đảm bảo rằng nó sẽ không chọn tất cả các bản ghi cùng một lúc
Tất nhiên, bạn có thể định nghĩa nhiều phương thức hơn trong lớp
374 theo yêu cầu của bạn. Chúng tôi sẽ giữ mọi thứ đơn giản trong bối cảnh của hướng dẫn này
Vì vậy, bây giờ chúng ta đã thiết lập cơ sở dữ liệu và các lớp mô hình. Trong phần tiếp theo, chúng ta sẽ xem cách tạo bộ điều khiển và các tệp còn lại trong ứng dụng demo của chúng ta
Tạo các thành phần lớp ứng dụng
Trong phần này, chúng tôi sẽ tạo các tệp còn lại cần thiết để ứng dụng demo của chúng tôi hoạt động
Thư mục inc
Để bắt đầu, chúng tôi sẽ tạo các tệp cấu hình cần thiết
Tạo inc/config. tệp php với nội dung sau
1
31
2
├── Controller60
3
├── Controller62
4
├── Controller64
5
├── Controller66
Đảm bảo cập nhật tất cả các giá trị bằng giá trị thực mà bạn đang sử dụng trong quá trình cài đặt của mình
Tiếp theo, hãy tiếp tục và tạo inc/bootstrap. tệp php với nội dung sau
1
31
2_______170
3
4
├── Controller73
5
├── Controller75
├── Controller0
├── Controller2
├── Controller78
├── Controller4
├── Controller80
├── Controller6
├── Controller8
├── Controller83
20
├── Controller85
41
├── Controller87
Đầu tiên, chúng tôi đã khởi tạo hằng số
379 với thư mục gốc của ứng dụng của chúng tôi. Bằng cách này, chúng ta có thể sử dụng hằng số
379 để chuẩn bị các đường dẫn tuyệt đối trong ứng dụng của mình. Tiếp theo, chúng tôi đã bao gồm cấu hình. php, chứa thông tin kết nối cơ sở dữ liệu. Cuối cùng, chúng tôi đã bao gồm các tệp bộ điều khiển và mô hình
Vì vậy, đó là để thiết lập các tệp phổ biến trong ứng dụng của chúng tôi
Thư mục điều khiển
Trong phần này, chúng tôi sẽ triển khai các bộ điều khiển nắm giữ phần lớn logic ứng dụng của chúng tôi
Bộ điều khiển cơ sở. tệp php
Tạo Bộ điều khiển/Api/BaseController. tệp php với nội dung sau. Lớp
381 chứa các phương thức tiện ích được sử dụng bởi các bộ điều khiển khác
1
31
2
├── Controller91
3
35
4
├── Controller95
5
├── Controller97
├── Controller0
├── Controller99
├── Controller2
201
├── Controller4
│ ├── BaseController.php2
├── Controller6
205
├── Controller8
│ └── UserController.php2
20
41
├── Controller95
43
212
45
214
47
216
49
├── Controller99
│ └── UserController.php1
220
│ └── UserController.php3
│ ├── BaseController.php2
│ └── UserController.php4
224
│ └── UserController.php6
226
│ └── UserController.php8
50
229
52
│ └── UserController.php2
54
56
├── Controller95
57
236
59
214
├── inc1
216
├── inc3
├── Controller99
├── inc5
244
├── inc7
│ ├── BaseController.php2
├── inc9
248
├── Controller00
│ └── UserController.php2
├── Controller02
├── Controller04
├── Controller95
├── Controller06
255
├── Controller08
257
├── Controller09
259
├── Controller11
261
├── Controller13
├── Controller99
├── Controller15
265
├── Controller16
│ ├── BaseController.php2
├── Controller18
269
├── Controller20
├── Controller22
272
├── Controller23
274
├── Controller25
276
├── Controller26
44
├── Controller28
├── inc4
├── Controller30
├── Controller32___
Hãy xem nhanh tất cả các phương thức của lớp
381
Phương thức
383 là một phương thức kỳ diệu và nó được gọi khi bạn cố gắng gọi một phương thức không tồn tại. Chúng tôi đang sử dụng cơ hội này để đưa ra lỗi
384 khi ai đó cố gắng gọi một phương thức mà chúng tôi chưa triển khai. Nếu điều này nghe có vẻ khó hiểu với bạn, đừng lo—nó sẽ có ý nghĩa hơn khi chúng ta kiểm tra ứng dụng của mình trong phần tiếp theo
Tiếp theo, có phương thức
385, trả về một mảng các phân đoạn URI. Nó rất hữu ích khi chúng tôi cố gắng xác thực điểm cuối REST do người dùng gọi. Tiếp theo đó, có phương thức
386, trả về một mảng các biến chuỗi truy vấn được truyền cùng với yêu cầu đến
Cuối cùng, có phương thức
387, được sử dụng để gửi phản hồi API. Chúng tôi sẽ gọi phương thức này khi chúng tôi muốn gửi phản hồi API cho người dùng
Bộ điều khiển người dùng. tệp php
Tiếp theo, tạo Controller/Api/UserController. tệp php với nội dung sau
1
31
2
293
3
35
4
├── Controller95
5
299
├── Controller0
├── Controller99
├── Controller2
│ └── Api03
├── Controller4
│ ├── BaseController.php2
├── Controller6
│ └── Api07
├── Controller8
│ └── Api09
20
│ └── Api11
41
43
│ └── Api14
45
│ └── Api16
47
│ └── Api18
49
│ └── UserController.php1
│ └── Api21
│ └── UserController.php3
│ └── Api23
│ └── UserController.php4
│ └── Api25
│ └── UserController.php6
│ └── Api27
│ └── UserController.php8
50
│ └── Api30
52
│ └── Api32
54
│ └── Api34
56
│ └── Api36
57
│ └── Api38
59
44
├── inc1
│ └── Api42
├── inc3
│ └── Api44
├── inc5
│ └── Api46
├── inc7
├── inc4
├── inc9
├── Controller00
│ └── Api51
├── Controller02
│ └── Api53
├── Controller04
│ └── Api55
├── Controller06
│ └── Api57
├── Controller08
│ └── Api59
├── Controller09
│ └── Api61
├── Controller11
│ └── Api42
├── Controller13
│ └── Api65
├── Controller15
│ └── Api67
├── Controller16
│ └── Api61
├── Controller18
├── inc4
├── Controller20
│ └── UserController.php2
├── Controller22
├── Controller37
Điều quan trọng cần lưu ý là lớp
388 mở rộng lớp
381. Lý tưởng nhất là lớp này sẽ chứa các phương thức hành động được liên kết với các điểm cuối REST được xác định cho thực thể người dùng. Ví dụ, trong trường hợp của chúng tôi, điểm cuối REST của
390 tương ứng với phương thức
391. Bằng cách này, bạn cũng có thể xác định các phương thức khác cho các điểm cuối REST khác
Phương thức
391 được sử dụng để lấy danh sách người dùng từ cơ sở dữ liệu MySQL. Nó chứa toàn bộ logic của điểm cuối REST của
390
Trong phương thức
391, chúng tôi đã khởi tạo một vài biến như
395 và
396 ngay từ đầu. Tiếp theo, chúng tôi kiểm tra xem người dùng đã gọi điểm cuối
397 bằng phương pháp
398 chưa; . Cuối cùng, chúng ta tạo đối tượng
374 và gọi phương thức
376 để lấy danh sách người dùng từ cơ sở dữ liệu. Chúng tôi cũng đã sử dụng hàm
│ ├── BaseController.php01 để chuyển đổi một mảng thành một đối tượng JSON trước khi gửi cho người dùng
Cuối cùng, chúng tôi đã sử dụng phương pháp
387 để gửi phản hồi JSON cho người dùng. Điều quan trọng cần lưu ý là giá trị tiêu đề kiểu nội dung phản hồi được đặt thành
│ ├── BaseController.php03 vì chúng tôi đang gửi phản hồi JSON
Tương tự, bạn cũng có thể xác định các phương thức khác cho các điểm cuối khác
chỉ số. tệp php
chỉ mục. tệp php là điểm vào của ứng dụng của chúng tôi. Hãy xem nó trông như thế nào
1
31
2
│ └── Api79
3
4
│ └── Api82
5
│ └── Api84
├── Controller0
├── Controller2
│ └── Api87
├── Controller4
│ └── Api89
├── Controller6
│ └── Api91
├── Controller8
├── Controller37
20
41
│ └── Api96
43
45
│ └── Api99
47
301
49
303
│ └── UserController.php1
├── Controller87
Đầu tiên, chúng tôi đã sử dụng các hàm
│ ├── BaseController.php04 và
│ ├── BaseController.php05 để khởi tạo các đoạn URI thành biến mảng
│ ├── BaseController.php06. Tiếp theo, chúng tôi đang xác thực các phân đoạn URI. Cuối cùng, chúng tôi đã khởi tạo bộ điều khiển
388 và gọi phương thức hành động tương ứng
Cùng với đó, chúng tôi đã tạo tất cả các tệp cần thiết trong ứng dụng REST demo của mình. Trong phần tiếp theo, chúng ta sẽ xem cách gọi nó từ góc độ người dùng cuối
Cách gọi API REST của chúng tôi
Trong phần này, chúng ta sẽ xem cách gọi ứng dụng demo của bạn. Trong ứng dụng của mình, chúng tôi đã tạo một điểm cuối REST để lấy danh sách người dùng
Hãy xem URL của điểm cuối của chúng tôi trông như thế nào
1____407____2
309
Nếu bạn nhớ lại chỉ mục. php, chúng tôi đã kiểm tra xem biến
│ ├── BaseController.php08 có được đặt thành
│ ├── BaseController.php09 không. Ngoài ra, giá trị biến
│ ├── BaseController.php10 sẽ hoạt động như một tên phương thức. Trong trường hợp trên, biến
│ ├── BaseController.php10 được đặt thành
│ ├── BaseController.php12. Do đó, cuối cùng nó sẽ gọi phương thức
391 của lớp
388
Đầu ra sẽ trông như thế này
1
311
2
313
3
315
4
317
5
319
├── Controller0
321
├── Controller2
323
├── Controller4
313
├── Controller6
327
├── Controller8
329
20
331
41
333
43
323
45
313
47
339
49
341
│ └── UserController.php1
343
│ └── UserController.php3
333
│ └── UserController.php4
323
│ └── UserController.php6
313
│ └── UserController.php8
351
50
353
52
355
54
321
56
359
57
361
Như bạn có thể thấy, nó trả về danh sách người dùng dưới dạng đối tượng JSON. Ngoài ra, nếu có bất kỳ lỗi ứng dụng nào, nó cũng sẽ được trả về dưới dạng đối tượng JSON cho mục đích gỡ lỗi
Phần kết luận
Hôm nay, chúng ta đã thảo luận về cách bạn có thể xây dựng một ứng dụng REST bằng PHP và MySQL. Đối với mục đích trình diễn, chúng tôi đã tạo một ứng dụng demo cho phép bạn tìm nạp danh sách người dùng từ cơ sở dữ liệu MySQL thông qua API REST