FuelPHP - 请求和响应

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

FuelPHP 提供了出色的 RequestResponse 类,分别用于读取和写入 HTTP 请求和 HTTP 响应。让我们在本章中了解 RequestResponse 类。

请求

在典型的 Web 应用程序中,应用程序需要解析当前请求的详细信息。Request 类提供了简单的方法来解析应用程序要处理的当前请求。 Request 还提供了通过充当 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();

示例

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

步骤 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 Firebox

响应

Response 类提供创建 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 Firebox

方法

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

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

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

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

a.url − 目标 URL b. method - 重定向方法。 location(默认)和 refresh c.redirect_code - http 状态代码。默认值为 302。

// 使用 URL
Response::redirect('http://some-domain/index', 'refresh');
// 或使用相对 URI
Response::redirect('employee/list');

redirect_back − 它类似于重定向方法,只是它会重定向到上一页。如果没有可用的后退页面,我们可以指定重定向页面。

// 如果没有后退页面,则转到员工列表页面
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');
// 使用第三个参数替换先前的值
$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');
// 返回 'no-cache'
$header = $response->get_header('Pragma');
// 返回 array('Pragma' => 'no-cache')
$header = $response->get_header();

body − 它提供了一个选项来设置 http 响应的主体。

$response = new Response();
$response->body('Hi, FuelPHP');
// 返回 'Hi, FuelPHP'
$body = $response->body();

send_headers − 它将标头发送到请求的客户端。FuelPHP 使用此方法将响应发送到客户端。通常,我们不需要使用此方法。

$response->send_headers();

Send − 与 send_headers 相同,但标头可能在 http 响应中受到限制。

// 也发送标头
$response->send(true);
// 仅发送正文
$response->send(false);
$response->send();