FuelPHP - 请求与响应


HTTP 请求和 HTTP 响应在任何 Web 应用程序中都发挥着重要作用。我们需要获取 http 请求的完整详细信息才能正确处理它。处理完成后,我们需要将处理后的数据通过http响应发送给客户端。

FuelPHP提供了优秀的RequestResponse类来分别读取和写入HTTP请求和HTTP响应。让我们在本章中了解RequestResponse类。

要求

在典型的 Web 应用程序中,应用程序需要解析当前请求的详细信息。Request类提供了简单的方法来解析当前要由应用程序处理的请求。Request还提供了一个通过充当 http 客户端来创建新请求的选项。

创建新请求使应用程序能够请求应用程序的其他部分或完全另一个应用程序并显示结果。让我们在本章中学习如何解析传入请求,并在 HMVC 请求章节中学习如何创建新请求。

解析请求

Request类提供了三种方法来获取http请求的详细信息。它们如下:

active - 它是一个静态方法,返回当前活动的 http 请求。

$currentRequest = Request::active();

param - 它返回指定参数的值。它包含两个参数。第一个参数是参数名称,第二个参数是要返回的值(如果该参数在当前 http 请求中不可用)。

$param = Request::active()->param('employee_name', 'none');

params - 它与 param 相同,只是它以数组形式返回所有参数。

$params = Request::active()->params();

例子

让我们创建一个简单的表单并使用请求类处理该表单。

步骤 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,它将显示以下响应。

Mozilla 火箱

回复

响应类提供了创建 http 响应的选项。默认情况下,大多数情况下我们不需要直接使用响应类。相反,我们使用View(我们将在下一章中学习)来创建 http 响应。View 对开发人员隐藏 http 响应,并使用底层Response类将响应发送到客户端。在高级情况下,我们直接使用 Response 类并创建完整的 http 响应。

创建响应

响应由标头和正文组成。主要标头是http 状态代码。HTTP状态码是HTTP协议中定义的用于描述响应的标准代码。例如状态码,200表示请求成功。

Response类提供三个参数来创建 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;
}

结果

Mozilla 火箱

方法

Response 类提供了很多操作 http 响应的方法。它们如下:

forge - 它与上面看到的响应类构造函数相同。

return Response::forge("Hi, FuelPHP", 404);

重定向- 它提供了重定向到 URL 而不是发送响应的选项。它包含以下参数,

a.url - 目标 url b. 方法 - 重定向方法。位置(默认)并刷新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 相同,但 headers 可能在 http 响应中受到限制。

// send the headers as well
$response->send(true);
// only send the body
$response->send(false);
$response->send();