CakePHP là một framework PHP giúp xây dựng các ứng dụng web nhanh hơn và đơn giản hơn. Nó sở hữu một hệ thống giàn giáo mạnh mẽ giúp giảm thời gian phát triển khi xây dựng các hệ thống đơn giản hoặc phức tạp
CakePHP xuất hiện vào khoảng năm 2005 và được phát triển bởi Larry Masters. Nó hiện có hơn 7.000 sao trên repo Github
Vì hướng dẫn này không phải là bắt đầu với CakePHP, nên tôi cho rằng bạn đã quen với việc thiết lập CakePHP 2. ứng dụng x. Bắt đầu nào
Yêu cầu
- BánhPHP 2. x, tốt nhất là phiên bản 2. 8
- Cơ sở dữ liệu MySQL
- Người phát thơ. Để thử nghiệm API của chúng tôi
Chúng ta sẽ tìm hiểu cách tạo API REST cơ bản ở định dạng JSON. Một định dạng JSON điển hình trông như thế này
{
"field":"value"
}
Chúng tôi sẽ tạo một API để tạo, đọc, cập nhật và xóa sản phẩm. Như bạn có thể biết, quy ước đặt tên bảng cơ sở dữ liệu CakePHP là số nhiều. Đối với hướng dẫn này, chúng tôi sẽ giả sử bảng của chúng tôi là “sản phẩm”. Hãy tiếp tục và tạo một bảng sản phẩm trong MySQL bằng cú pháp bên dưới
CREATE TABLE `products` [
`id` int[11] unsigned NOT NULL AUTO_INCREMENT,
`name` varchar[255] DEFAULT NULL,
`description` varchar[255] DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY [`id`],
KEY `name` [`name`]
] ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Trong thư mục dự án của bạn, hãy chuyển đến ứng dụng/Bộ điều khiển. Tạo một tệp mới có tên ProductsController. php. Mở tệp và dán mã bên dưới
Những gì chúng tôi chỉ đơn giản làm ở đây là tuyên bố rằng ProductsController của chúng tôi kế thừa AppController chính. Bây giờ, hãy chèn API đầu tiên của chúng tôi, đây sẽ là API tạo hoặc thêm sản phẩm mới
API để tạo bản ghi mới
public function add[]{
$this->layout = false;
$response = array['status'=>'failed', 'message'=>'HTTP method not allowed'];
if[$this->request->is['post']]{
//get data from request object
$data = $this->request->input['json_decode', true];
if[empty[$data]]{
$data = $this->request->data;
}
//response if post data or form data was not passed
$response = array['status'=>'failed', 'message'=>'Please provide form data'];
if[!empty[$data]]{
//call the model's save function
if[$this->Product->save[$data]]{
//return success
$response = array['status'=>'success','message'=>'Product successfully created'];
} else{
$response = array['status'=>'failed', 'message'=>'Failed to save data'];
}
}
}
$this->response->type['application/json'];
$this->response->body[json_encode[$response]];
return $this->response->send[];
}
Giải thích đoạn mã trên, trước tiên chúng tôi thông báo CakePHP không sử dụng bố cục cho chức năng này. Chúng tôi đã làm điều này để chỉ nhận được phản hồi được mã hóa JSON của chúng tôi. Sau đó, chúng tôi đặt trạng thái phản hồi mặc định là không thành công. Tiếp theo, chúng tôi đã kiểm tra xem tiêu đề yêu cầu có phải là POST không. Vì chúng ta đang xử lý dữ liệu JSON, nên phương pháp nhận dữ liệu JSON trong CakePHP là sử dụng $this->request->input['json_decode', true]
Theo mặc định, mã hóa kiểu nội dung của bạn phải là application/json
. Nếu đó không phải là trường hợp, chúng ta cần xử lý tình huống như vậy. Để làm điều này, chúng tôi kiểm tra xem dữ liệu trong $this->request->input['json_decode', true]
có trống không. Nếu đúng như vậy, chúng tôi truy xuất dữ liệu bài đăng bằng cách gọi
CREATE TABLE `products` [
`id` int[11] unsigned NOT NULL AUTO_INCREMENT,
`name` varchar[255] DEFAULT NULL,
`description` varchar[255] DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY [`id`],
KEY `name` [`name`]
] ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
1Cuối cùng, chúng ta gọi chức năng lưu trên Model sản phẩm. Chúng tôi kiểm tra xem dữ liệu đã được lưu thành công hay chưa. Và đó là nó. Bạn đã tạo một API để tạo bản ghi trong cơ sở dữ liệu MySQL
Chuyển đến
CREATE TABLE `products` [
`id` int[11] unsigned NOT NULL AUTO_INCREMENT,
`name` varchar[255] DEFAULT NULL,
`description` varchar[255] DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY [`id`],
KEY `name` [`name`]
] ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2 và tạo thư mục Sản phẩm. Trong thư mục này, tạo một tệp trống thêm. ctp Nếu bạn không làm điều này, phản hồi của bạn sẽ trả về lỗi chế độ xem bị thiếuMở ứng dụng Postman của bạn. Trên tab mới, dán URL tên miền của bạn. Nếu bạn đang làm việc từ máy chủ cục bộ, hãy đảm bảo rằng máy chủ của bạn đang mở và sao chép đường dẫn đến dự án của bạn. Trong trường hợp của tôi, đó là
CREATE TABLE `products` [
`id` int[11] unsigned NOT NULL AUTO_INCREMENT,
`name` varchar[255] DEFAULT NULL,
`description` varchar[255] DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY [`id`],
KEY `name` [`name`]
] ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3. Chúng tôi cần đảm bảo rằng đường dẫn của chúng tôi liên kết với chức năng thêm trong bộ điều khiển sản phẩm. Để thực hiện việc này, chỉ cần thêm /products/add vào URL tên miền của bạn ở trên. Sử dụng bài kiểm tra của tôi ở trên, đường dẫn đầy đủ của tôi sẽ là CREATE TABLE `products` [
`id` int[11] unsigned NOT NULL AUTO_INCREMENT,
`name` varchar[255] DEFAULT NULL,
`description` varchar[255] DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY [`id`],
KEY `name` [`name`]
] ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
4. Dán phần này vào phần URL trên Người đưa thư của bạn. Thay đổi tiêu đề yêu cầu thành POST. Điều hướng đến tab nội dung, rồi đến phần 'thô'. Nhấp vào hộp thả xuống và chọn JSON[application/json]. Dán mã dưới đây________số 8_______Bạn sẽ nhận được phản hồi thành công. Xem hình ảnh bên dưới
API để đọc bản ghi
Hành động tiếp theo là đọc một bản ghi và xuất nó dưới dạng JSON. Để làm điều này, xem mã dưới đây
public function view[$id = null]{
$this->layout = false;
//set default response
$response = array['status'=>'failed', 'message'=>'Failed to process request'];
//check if ID was passed
if[!empty[$id]]{
//find data by ID
$result = $this->Product->findById[$id];
if[!empty[$result]]{
$response = array['status'=>'success','data'=>$result];
} else {
$response['message'] = 'Found no matching data';
}
} else {
$response['message'] = "Please provide ID";
}
$this->response->type['application/json'];
$this->response->body[json_encode[$response]];
return $this->response->send[];
}
Tạo chế độ xem tệp. ctp trong thư mục ứng dụng/Chế độ xem/Sản phẩm. URL yêu cầu thông số ID được chuyển. Trong trường hợp này, chúng tôi sẽ chuyển ID của sản phẩm cuối cùng mà chúng tôi đã thêm vào URL. Trong trường hợp này, chúng tôi đã không xử lý loại yêu cầu. Chúng tôi chỉ kiểm tra xem một ID đã được đặt hay chưa, nếu có, chúng tôi sẽ tra cứu nó trong cơ sở dữ liệu và trả về kết quả dưới dạng JSON
Sử dụng URL kiểm tra ở trên, URL của chúng ta sẽ trông như thế này. http. //localhost/apitest/products/view/1, trong đó 1 là ID sản phẩm. Bây giờ hãy chạy cái này trong Postman của bạn. Xem kết quả bên dưới
API để cập nhật bản ghi
Tạo tệp có tên cập nhật. ctp trong thư mục sản phẩm. Dán mã bên dưới vào Bộ điều khiển sản phẩm
public function update[]{
//set layout as false to unset default CakePHP layout. This is to prevent our JSON response from mixing with HTML
$this->layout = false;
//set default response
$response = array['status'=>'failed', 'message'=>'HTTP method not allowed'];
//check if HTTP method is PUT
if[$this->request->is['put']]{
//get data from request object
$data = $this->request->input['json_decode', true];
if[empty[$data]]{
$data = $this->request->data;
}
//check if product ID was provided
if[!empty[$data['id']]]{
//set the product ID to update
$this->Product->id = $data['id'];
if[$this->Product->save[$data]]{
$response = array['status'=>'success','message'=>'Product successfully updated'];
} else {
$response['message'] = "Failed to update product";
}
} else {
$response['message'] = 'Please provide product ID';
}
}
$this->response->type['application/json'];
$this->response->body[json_encode[$response]];
return $this->response->send[];
}
API để xóa bản ghi
public function ajax_delete[]{
$this->layout = false;
//set default response
$response = array['status'=>'failed', 'message'=>'HTTP method not allowed'];
//check if HTTP method is DELETE
if[$this->request->is['delete']]{
//get data from request object
$data = $this->request->input['json_decode', true];
if[empty[$data]]{
$data = $this->request->data;
}
//check if product ID was provided
if[!empty[$data['id']]]{
if[$this->Product->delete[$id, true]]{
$response = array['status'=>'success','message'=>'Product successfully deleted'];
}
}
}
$this->response->type['application/json'];
$this->response->body[json_encode[$response]];
return $this->response->send[];
}
yppy. Chúng tôi đã tạo thành công một API thực hiện các chức năng CRUD. Vỗ tay cho chính mình 👍👍🤛🏾
Cảm ơn bạn đã theo dõi thông qua. Hướng dẫn tiếp theo của chúng tôi sẽ hướng dẫn cách sử dụng API CakePHP của bạn bằng jQuery. Cho đến lúc đó, hãy tiếp tục học hỏi
P. S. Bài viết này được xuất bản lần đầu trên bài viết trung bình của tôi. https. //trung bình. com/@abeltolu/build-a-rest-api-using-cakephp-2-x-in-3-minutes-1abe842ad7a1
PHPCakephpPostmanApi
Bài báo cáo
Thưởng thức bài viết này?
1
Chia sẻ
Tolulope Abel Adetula
Kỹ sư giao diện người dùng
Kỹ sư phần mềm có kinh nghiệm với niềm đam mê dành cho mọi thứ trực quan và linh hoạt với kiến trúc mạnh mẽ. Tôi quan tâm đến việc xây dựng trải nghiệm người dùng phong phú và tương tác trên Web và Di động. giao diện người dùng. Javascript, TypeScript [Phản ứng,