📅  最后修改于: 2020-10-25 04:21:19             🧑  作者: Mango
HTTP请求和HTTP响应在任何Web应用程序中都起着重要作用。我们需要获取http请求的完整详细信息以正确处理它。处理后,我们需要通过http响应将处理后的数据发送给客户端。
FuelPHP提供了出色的Request和Response类,分别用于读取和写入HTTP请求和HTTP响应。让我们在本章中了解Request和Response类。
在典型的Web应用程序中,该应用程序需要解析当前请求的详细信息。请求类提供了简单的方法来解析应用程序要处理的当前请求。请求还提供了通过充当http客户端来创建新请求的选项。
创建新请求使应用程序可以请求应用程序的其他部分或整个其他应用程序并显示结果。让我们在本章中学习如何解析传入的请求,并在HMVC Request一章中学习如何创建新请求。
Request类提供了三种方法来获取http请求的详细信息。它们如下
active-这是一个静态方法,它返回当前的活动http请求。
$currentRequest = Request::active();
param –返回指定参数的值。它包含两个参数。如果参数在当前http请求中不可用,则第一个参数是参数名称,第二个参数是要返回的值。
$param = Request::active()->param('employee_name', 'none');
params –与param相同,只不过它以数组形式返回所有参数。
$params = Request::active()->params();
让我们创建一个简单的表单并使用request类处理该表单。
步骤1-在员工控制器中创建一个新动作, action_request 。
public function action_request() {
}
步骤2-调用请求方法以获取当前请求的所有参数。
public function action_request() {
$params = Request::active()->params();
}
步骤3-转储获取的参数数组。
public function action_request() {
$params = Request::active()->params();
echo dump($params);
}
步骤4-更改路由以在路由配置文件fuel / app / config / routes.php中包含参数
'employee/request(/:name)?' => array('employee/request', 'name' => 'name'),
现在,请求新操作http:// localhost:8080 / employee / request / Jon,它将显示以下响应。
响应类提供创建http响应的选项。默认情况下,在大多数情况下,我们不需要直接使用响应类。相反,我们使用View (将在下一章中学习)创建http响应。 View隐藏了开发人员的http响应,并使用基础Response类将响应发送给客户端。在高级情况下,我们直接使用Response类并创建完整的http响应。
响应由标题和正文组成。主要标头是http状态代码。 Http状态代码是HTTP协议中定义的标准代码,用于描述响应。例如,状态码200表示请求成功。
响应类提供了三个参数来创建http响应,
$ body -http响应的主体
$ status_code -http响应的状态码
$ headers-可选标题作为数组
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
让我们在雇员控制器中创建一个新的动作action_response ,如下所示。
public function action_response() {
$body = "Hi, FuelPHP";
$headers = array ('Content-Type' => 'text/html',);
$response = new Response($body, 200, $headers);
return $response;
}
响应类提供了许多方法来处理http响应。它们如下
伪造-与上面看到的响应类构造函数相同。
return Response::forge("Hi, FuelPHP", 404);
redirect-它提供了重定向到URL而不是发送响应的选项。它包含以下参数,
a.url-目标网址b。 method-重定向方法。位置(默认)并刷新c 。 redirect_code-HTTP状态码。默认值为302。
// use a URL
Response::redirect('http://some-domain/index', 'refresh');
// or use a relative URI
Response::redirect('employee/list');
redirect_back-类似于重定向方法,除了它重定向到上一页。如果没有可用的后退页面,我们可以指定重定向页面。
// If there is no back page, go to the employee list page
Response::redirect_back('/employee/list', 'refresh');
set_status-它提供了设置http状态代码的选项。
$response = new Response();
$response->set_status(404);
set_header-它提供了设置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-与set_header相同,除了它提供了使用数组设置多个头的选项。
$response = new Response();
$response->set_headers (array
'Content-Type' => 'application/pdf',
'Pragma' => 'no-cache',
));
get_header-它可以获取先前设置的标题详细信息。
$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-它提供一个选项来设置http响应的正文。
$response = new Response();
$response->body('Hi, FuelPHP');
// returns 'Hi, FuelPHP'
$body = $response->body();
send_headers-将标头发送到请求的客户端。 FuelPHP使用此方法将响应发送到客户端。通常,我们不需要使用此方法。
$response->send_headers();
发送-同除了头send_headers可以在HTTP响应的限制。
// send the headers as well
$response->send(true);
// only send the body
$response->send(false);
$response->send();