前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[CodeIgniter4]概述-处理 HTTP 请求

[CodeIgniter4]概述-处理 HTTP 请求

作者头像
landv
发布2020-03-05 16:17:36
1.9K0
发布2020-03-05 16:17:36
举报
文章被收录于专栏:landv

处理 HTTP 请求

为了充分地使用 CodeIgniter,你需要对 HTTP 请求和响应的工作方式有基本的了解。对于所有想要成功的开发者来说, 理解 HTTP 背后的概念是 必须 的。

本章的第一部分会给出一些关于 HTTP 的概述,接着我们会讨论怎样用 CodeIgniter 来处理 HTTP 请求与响应。

什么是 HTTP ?

HTTP 是两台计算机相互通信的一种基于文本的协议。当浏览器请求页面时,它会询问服务器是否可以获取该页面。然后, 服务器准备页面并将响应发送回发送请求的浏览器。就是这样简单,也可以说复杂些,但基本就是这样。

HTTP 是用于描述该交换约定的术语。它代表超文本传输协议(Hypertext Transfer Protocol)。开发 web 应用程序时, 你的目标只是了解浏览器的要求,并能够做出适当的响应。

HTTP 请求

当客户端(浏览器,手机软件等)尝试发送 HTTP 请求时,客户端会向服务器发出一条文本消息然后等待响应。

这条文本消息会像这样:

代码语言:javascript
复制
GET / HTTP/1.1
Host codeigniter.com
Accept: text/html
User-Agent: Chrome/46.0.2490.80

这条消息包含了所有服务器可能需要的信息。比如它请求的 method(GET,POST,DELETE 等)、它的 HTTP 版本。

该请求还包括许多可选的请求头字段,这些头字段可以包含各种信息,例如客户端希望内容显示为哪种语言, 客户端接受的格式类型等等。 Wikipedia 上有一篇文章,列出了 所有的请求头字段 (译者注:国内用户如果无法访问的话, 可以查看 在MDN上的页面 )。

HTTP 响应

服务器收到请求后,你的 web 应用程序会处理这条信息然后输出一些响应结果。服务器会将你的响应结果打包为对 客户端的的你的响应结果打包为对客户端的响应的一部分。服务器对客户端的响应消息看起来会像这样:

代码语言:javascript
复制
HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Thu, 05 Nov 2015 05:33:22 GMT
Content-Type: text/html; charset=UTF-8

<html>
        . . .
</html>

响应消息告诉客户端服务器正在使用的 HTTP 版本规范,以及响应状态码(200)。状态码是标准化的对客户端具有非常特定 含义的代码。它可以告诉客户端响应成功(200),或者找不到页面(404)等等。 在 IANA 可以找到 完整的响应状态码列表 。

对 HTTP 请求和响应的处理

虽然 PHP 提供了与 HTTP 请求和响应进行交互的原生方式,但 CodeIgniter 像大多数框架一样,将它们抽象化,让你拥有一个 一致、简单的接口。IncomingRequest 类 类是 HTTP 请求的面向对象的表示形式。 它提供你所需要的一切:

代码语言:javascript
复制
use CodeIgniter\HTTP\IncomingRequest;

$request = new IncomingRequest(new \Config\App(), new \CodeIgniter\HTTP\URI());

// 请求的 uri(如 /about )
$request->uri->getPath();

// 检索 $_GET 与 $_POST 变量
$request->getVar('foo');
$request->getGet('foo');
$request->getPost('foo');

// 从 AJAX 调用中检索 JSON
$request->getJSON();

// 检索 server 变量
$request->getServer('Host');

// 检索 HTTP 请求头,使用不区分大小写的名称
$request->getHeader('host');
$request->getHeader('Content-Type');

$request->getMethod();  // GET, POST, PUT 等等

request 类会在后台为你做很多工作,你无需担心。 isAJAX() 和 isSecure() 函数会自动检查几种不同的 method 来 最后确定正确的答案。

CodeIgniter 还提供了 Response 类 ,它是 HTTP 响应的面向对象式表示。 它为你提供一种简单而强大的方法来构造对客户的响应:

代码语言:javascript
复制
use CodeIgniter\HTTP\Response;

$response = new Response();

$response->setStatusCode(Response::HTTP_OK);
$response->setBody($output);
$response->setHeader('Content-type', 'text/html');
$response->noCache();

// 把响应结果发给浏览器
$response->send();

另外, Response 类 还允许你处理 HTTP 缓存层以获得最佳性能。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 处理 HTTP 请求
    • 什么是 HTTP ?
      • HTTP 请求
      • HTTP 响应
      • 对 HTTP 请求和响应的处理
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档