Nội dung chính
Requests trong yii2
Requests gửi 1 yêu cầu đến website của chúng ta nhằm yêu cầu website cung cấp thông tin từ website đến với người dùng như header,thông tin hữu ích ,cookies .
1.1 Các thông số trong requests
Ở ví dụ dưới đây bạn sẽ thấy việc yêu cầu các thông số như nào
$request = Yii::$app->request; $get = $request->get(); // giống code trong php: $get = $_GET; $user_id = $request->get('user_id'); // giống code trong php: $user_id = isset($_GET['user_id']) ? $_GET['user_id'] : null; $user_id = $request->get('user_id', 1); // giống code trong php: $user_id = isset($_GET['user_id']) ? $_GET['user_id'] : 1; $post = $request->post(); // giống code trong php: $post = $_POST; $name = $request->post('name'); // giống code trong php : $name = isset($_POST['name']) ? $_POST['name'] : null; $name = $request->post('name', ''); // giống code trong php: $name = isset($_POST['name']) ? $_POST['name'] : '';
Mình hay dùng 2 loại này
$user_id = $request->get('user_id', 1);
và
$name = $request->post('name', '');
Để đảm bảo yếu tố bảo mật
1.2 Các phương thức request
Có 4 phương thức request đó là Ajax ,Put,Get,Post .Chúng ta có thể check chúng với hàm request
$request = Yii::$app->request; if ($request->isAjax) { /* code */ } if ($request->isGet) { /* code */ } if ($request->isPost) { /* code */ } if ($request->isPut) { /* code */ }
1.3 Request URLs
Request có thể cung cấp nhiều cách kiểm tra các thành phần request đến server như link đến server hoặc các thành phần trên link url .Có các cách check như sau .Bạn có thể xem ở code như sau : ví dụ link :http://localhost/demoyii2/frontend/web/demo.html
echo Yii::$app->request->getUrl(); // get url không hoàn chỉnh /demoyii2/frontend/web/demo.html echo Yii::$app->request->getabsoluteUrl(); // get url hoàn chỉnh :http://localhost/demoyii2/frontend/web/demo.html echo Yii::$app->request->gethostInfo(); // get thông tin host :http://localhost echo Yii::$app->request->getpathInfo(); //get path info :demo.html echo Yii::$app->request->getqueryString(); // get đoạn mã query :/demoyii2/frontend/web echo Yii::$app->request->getbaseUrl(); // lấy thông tin domain : localhost echo Yii::$app->request->getserverName(); // rõng vì server ko có echo Yii::$app->request->getserverPort(); // cổng web : 80
1.4 HTTP Headers
Bạn có thể lấy thông tin header khi website trả về cho người dùng thông qua hàm
$headers = Yii::$app->request->headers; $accept = $headers->get('User-Agent');
Nhằm lấy thông tin người dùng đã đến website ,trình duyệt người dùng …
1.5 Thông tin người dùng
Bạn có thể lấy được 2 thông tin người dùng đó là ip và host người dùng
$userHost = Yii::$app->request->userHost; $userIP = Yii::$app->request->userIP;
2 Responses trong yii2
Responses trong yii2 xử lý các quá trình liên quan đến trả dữ liệu về người dùng .Ở phần này chúng ta sẽ tìm hiểu các phần sau :
2.1 Status Code
Yii::$app->response->statusCode = 200;
Ở đây chúng ta có thể can thiệp quá trình gửi mã code báo về cho client .Nói chung status này chúng ta rất ít dùng
2.2 Trả về dữ liệu HTTP Headers
Chúng ta can thiệp vào phần header của layout trả về bằng cách như sau :
$headers = Yii::$app->response->headers; // thêm Pragma header. Nếu tồn tại Pragma headers thì sẽ ko viết đè lên $headers->add('Pragma', 'no-cache'); // thêm Pragma header .Mọi Pragma tồn tại sẽ bị discarded $headers->set('Pragma', 'no-cache'); // xóa bỏ Pragma $values = $headers->remove('Pragma');
2.3 Response Body
Thường chúng ta sẽ response bằng phương thức render ,bên cạnh đó bạn có thể response như sau :
Yii::$app->response->content = 'hello world!';
2.4 Chuyển hướng
Chúng ta dễ dàng chuyển hướng người dùng mà ko ảnh hưởng đến seo bằng dòng code
return $this->redirect('http://example.com/new', 301);
2.5 Send File
Gửi file cho người dùng dễ dàng với send file .Thường kết hợp với ajax trong website
public function actionDownload() { return \Yii::$app->response->sendFile('path/to/file'); }
Vậy là bạn đã có thể tận dụng tối đa sức mạnh request và responses với website của mình với những kiến thức trên .Có gì khó hiểu bạn hãy comment phía dưới để mình giải đáp