FuelPHP - Yêu cầu & Phản hồi
Yêu cầu HTTP và phản hồi HTTP đóng một vai trò quan trọng trong bất kỳ ứng dụng web nào. Chúng tôi cần nhận được chi tiết đầy đủ của yêu cầu http để xử lý yêu cầu đó một cách chính xác. Sau khi xử lý, chúng tôi cần gửi dữ liệu đã xử lý đến máy khách thông qua phản hồi http.
FuelPHP cung cấp tuyệt vời Request và Responselớp để đọc và ghi yêu cầu HTTP và phản hồi HTTP tương ứng. Hãy để chúng tôi tìm hiểu về cả haiRequest và Response lớp trong chương này.
Yêu cầu
Trong một ứng dụng web điển hình, ứng dụng cần phân tích cú pháp chi tiết của yêu cầu hiện tại. Lớp Request cung cấp các phương thức đơn giản để phân tích cú pháp yêu cầu hiện tại sẽ được ứng dụng xử lý. Request cũng cung cấp một tùy chọn để tạo một yêu cầu mới bằng cách hoạt động như một ứng dụng khách http.
Tạo một yêu cầu mới cho phép ứng dụng yêu cầu phần khác của ứng dụng hoặc toàn bộ ứng dụng khác và hiển thị kết quả. Hãy để chúng tôi tìm hiểu cách phân tích cú pháp yêu cầu đến trong chương này và tìm hiểu cách tạo một yêu cầu mới trong chương Yêu cầu HMVC.
Phân tích cú pháp một yêu cầu
Lớp Request cung cấp ba phương thức để lấy chi tiết của yêu cầu http. Chúng như sau,
active - Đây là một phương thức tĩnh, trả về yêu cầu http đang hoạt động hiện tại.
$currentRequest = Request::active();
param - Nó trả về giá trị của tham số được chỉ định. Nó chứa hai đối số. Đối số đầu tiên là tên tham số và đối số thứ hai là giá trị trả về, nếu tham số không khả dụng trong yêu cầu http hiện tại.
$param = Request::active()->param('employee_name', 'none');
params - Nó giống như param ngoại trừ nó trả về tất cả các tham số dưới dạng một mảng.
$params = Request::active()->params();
Thí dụ
Hãy để chúng tôi tạo một biểu mẫu đơn giản và xử lý biểu mẫu bằng cách sử dụng lớp yêu cầu.
Step 1- Tạo một action mới, action_request trong bộ điều khiển nhân viên.
public function action_request() {
}
Step 2 - Gọi các phương thức yêu cầu để lấy tất cả các tham số của yêu cầu hiện tại.
public function action_request() {
$params = Request::active()->params();
}
Step 3 - Dump mảng tham số đã tìm nạp.
public function action_request() {
$params = Request::active()->params();
echo dump($params);
}
Step 4- Thay đổi định tuyến để bao gồm các thông số trong tệp cấu hình tuyến đường, fuel / app / config / route.php
'employee/request(/:name)?' => array('employee/request', 'name' => 'name'),
Bây giờ, yêu cầu hành động mới, http: // localhost: 8080 / worker / request / Jon , nó sẽ hiển thị phản hồi sau.
Phản ứng
Lớp phản hồi cung cấp các tùy chọn để tạo phản hồi http. Theo mặc định, chúng ta không cần sử dụng trực tiếp một lớp phản hồi trong hầu hết các tình huống. Thay vào đó, chúng tôi sử dụng View (mà chúng tôi sẽ tìm hiểu trong chương tiếp theo) để tạo phản hồi http. View ẩn phản hồi http từ nhà phát triển và gửi phản hồi đến máy khách bằng cách sử dụng lớp Phản hồi bên dưới . Trong tình huống nâng cao, chúng tôi sử dụng trực tiếp lớp Phản hồi và tạo phản hồi http hoàn chỉnh.
Tạo phản hồi
Câu trả lời bao gồm tiêu đề và nội dung. Tiêu đề chính là mã trạng thái http. Mã trạng thái Http là các mã tiêu chuẩn được xác định trong giao thức HTTP để mô tả phản hồi. Ví dụ, mã trạng thái, 200 nghĩa là yêu cầu thành công.
Lớp phản hồi cung cấp ba đối số để tạo phản hồi http,
- $body - nội dung của phản hồi http
- $status_code - mã trạng thái của phản hồi http
- $headers - tiêu đề tùy chọn dưới dạng mảng
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
Hãy để chúng tôi tạo một hành động mới, action_response trong bộ điều khiển nhân viên như sau.
public function action_response() {
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
return $response;
}
Kết quả
Phương pháp
Lớp phản hồi cung cấp rất nhiều phương thức để thao tác các phản hồi http. Chúng như sau,
forge - Nó giống như hàm tạo lớp response như đã thấy ở trên.
return Response::forge("Hi, FuelPHP", 404);
redirect- Nó cung cấp tùy chọn chuyển hướng đến một URL thay vì gửi phản hồi. Nó chứa các đối số sau,
a.url- url đích b. method - các phương pháp chuyển hướng. vị trí (mặc định) và làm mới c.redirect_code - mã trạng thái http. Giá trị mặc định là 302.
// use a URL
Response::redirect('http://some-domain/index', 'refresh');
// or use a relative URI
Response::redirect('employee/list');
redirect_back- Nó tương tự như phương pháp chuyển hướng ngoại trừ nó chuyển hướng đến trang trước. Chúng tôi có thể chỉ định trang chuyển hướng, nếu không có trang quay lại.
// If there is no back page, go to the employee list page
Response::redirect_back('/employee/list', 'refresh');
set_status - Nó cung cấp một tùy chọn để đặt mã trạng thái http.
$response = new Response();
$response->set_status(404);
set_header - Nó cung cấp một tùy chọn để đặt tiêu đề http.
$response = new Response();
$response->set_header('Content-Type', 'application/pdf');
// replace previous value using third arguments
$response->set_header('Content-Type', 'application/pdf', 'text/plain');
set_headers- Nó giống như set_header ngoại trừ nó cung cấp một tùy chọn để đặt nhiều tiêu đề bằng cách sử dụng mảng.
$response = new Response();
$response->set_headers(array
'Content-Type' => 'application/pdf',
'Pragma' => 'no-cache',
));
get_header - Nó cho phép lấy các chi tiết tiêu đề đã đặt trước đó.
$response = new Response();
$response->set_header('Pragma', 'no-cache');
// returns 'no-cache'
$header = $response->get_header('Pragma');
// returns array('Pragma' => 'no-cache')
$header = $response->get_header();
body - Nó cung cấp một tùy chọn để đặt nội dung của phản hồi http.
$response = new Response();
$response->body('Hi, FuelPHP');
// returns 'Hi, FuelPHP'
$body = $response->body();
send_headers- Nó gửi các tiêu đề cho khách hàng được yêu cầu. FuelPHP sử dụng phương pháp này để gửi phản hồi cho khách hàng. Thông thường, chúng ta không cần sử dụng phương pháp này.
$response->send_headers();
Send - Tương tự như send_headers ngoại trừ tiêu đề có thể bị hạn chế trong phản hồi http.
// send the headers as well
$response->send(true);
// only send the body
$response->send(false);
$response->send();