ob娱乐下载Symfony和HTTP基础

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.7,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

ob娱乐下载Symfony和HTTP基础

好消息!欧宝平台是合法的吗当你学习Symfony的时候,你ob娱乐下载学习基础知识网络.ob娱乐下载Symfony紧密地模仿了HTTP请求-响应流:即基本范式几乎落后了所有网络交流。

在本文中,您将了解HTTP基础知识,并了解如何在Symfony中应用这些基础知识。ob娱乐下载

HTTP中的请求和响应

HTTP(超文本传输协议)是一种允许两台机器相互通信的文本语言。例如,当检查最新的xkcd漫画中,以下(大致)对话发生:

虽然实际使用的语言更正式一些,但它仍然非常简单。HTTP是用来描述这种简单的基于文本的语言的术语。服务器的目标是总是理解文本请求并返回文本响应。

ob娱乐下载《Symfony》便是基于这种现实而建立起来的。不管你是否意识到,HTTP是你每天都在使用的东西。使用Symob娱乐下载fony,您将学习如何掌握它。

第一步:客户端发送请求

网上的每段对话都以请求.请求是由客户端(例如浏览器、智能手机应用程序等)以一种称为HTTP的特殊格式创建的文本消息。客户端将请求发送到服务器,然后等待响应。

看一下浏览器和xkcd web服务器之间交互(请求)的第一部分:

在HTTP语言中,这个HTTP请求实际上看起来像这样:

1 2 3 4
GET / HTTP/1.1 Host: xkcd.com Accept: text/html User-Agent: Mozilla/5.0 (Macintosh)

这个简单的信息传达了一切关于客户端正在请求哪些资源的必要信息。HTTP请求的第一行是最重要的,因为它包含两个重要的内容:HTTP方法(GET)和URI (/).

URI(例如://联系,等等)是唯一的地址或位置,用来标识客户端想要的资源。HTTP方法(例如:得到)定义客户想要什么利用资源。HTTP方法(也称为动词)定义了客户端可以对资源进行操作的几种常见方法——最常见的HTTP方法是:

得到
从服务器检索资源(例如访问页面时);
帖子
在服务器上创建一个资源(例如当提交一个表单时);
/补丁
更新服务器上的资源(api使用);
删除
从服务器上删除资源(api使用)。

考虑到这一点,你可以想象一个删除特定博客条目的HTTP请求是什么样子的,例如:

1
DELETE /blog/15 HTTP/1.1

请注意

HTTP规范实际上定义了9种HTTP方法,但其中许多方法没有得到广泛使用或支持。实际上,许多现代浏览器只支持帖子而且得到HTML格式。然而,在XMLHttpRequest

除了第一行之外,HTTP请求总是包含其他被称为request的信息行.报头可以提供广泛的信息,例如被请求资源的主机(宿主),则客户端接受的响应格式(接受)和客户端用来发出请求的应用程序(用户代理).还有许多其他的标题,可以在维基百科上找到HTTP报头字段列表篇文章。

步骤2:服务器返回响应

一旦服务器接收到请求,它就确切地知道客户端需要哪些资源(通过URI),以及客户端想用该资源做什么(通过方法)。例如,对于GET请求,服务器准备好资源并在HTTP响应中返回它。考虑xkcd web服务器的响应:

翻译成HTTP,发送回浏览器的响应将是这样的:

1 2 3 4 5 6 7 8
HTTP/1.1 200 OK日期:Sat, 02 april 2011 21:05:05 GMT服务器:lighttpd/1.4.19内容类型:文本/html

HTTP响应包含所请求的资源(在本例中是HTML内容),以及关于响应的其他信息。第一行尤其重要,它包含HTTP响应状态代码(在本例中为200)。

状态代码将请求的总体结果传递回客户机。请求成功了吗?有错误吗?不同的状态代码表示成功,错误或客户端需要做一些事情(例如重定向到另一个页面)。请查看HTTP状态码列表

与请求一样,HTTP响应包含额外的信息片段,称为HTTP报头。同一资源的主体可以以多种不同的格式返回,如HTML、XML或JSON内容类型头使用Internet媒体类型,如text / html告诉客户端正在返回哪种格式。你可以看到常见媒体类型列表从IANA。

还有许多其他的头文件,其中一些非常强大。例如,某些头文件可以用来创建强大的缓存系统。

请求,响应和Web开发

这种请求-响应对话是驱动web上所有通信的基本过程。尽管这个过程很重要,也很强大,但它也不可避免地简单。

最重要的事实是:无论你使用哪种语言,你构建的应用程序类型(web,移动,JSON API)或你遵循的开发理念,应用程序的最终目标都是总是理解每个请求并创建和返回适当的响应。

另请参阅

要了解更多关于HTTP规范的信息,请阅读原文HTTP 1.1 RFC或者是HTTP Bis,这是澄清原始规范的积极努力。

PHP中的请求和响应

那么,在使用PHP时,如何与“请求”交互并创建“响应”呢?实际上,PHP从整个过程中抽取了一些内容:

1 2 3 4 5 6
uri_SERVER“REQUEST_URI”];喷火_GET“foo”];头(“的content - type: text / html”);回声请求的URI是:uri回声“foo”参数的值是:喷火

虽然听起来很奇怪,但这个小应用程序实际上是从HTTP请求中获取信息并使用它来创建HTTP响应。PHP不解析原始HTTP请求消息,而是准备超全局变量(例如$ _SERVER而且$ _GET),其中包含来自请求的所有信息。类似地,您可以使用PHP,而不是返回http格式的文本响应函数创建响应标头并打印将作为响应消息内容部分的实际内容。PHP将创建一个真正的HTTP响应并将其返回给客户端:

1 2 3 4 5 6 7
HTTP/1.1 200 OK日期:Sat, 03 Apr 2011 02:14:33 GMT服务器:Apache/2.2.17 (Unix)内容类型:text/html请求的URI是:/testing?foo=ob娱乐下载symfony参数foo的值为:symfony

Symfony中的请求和响应ob娱乐下载

ob娱乐下载Symfony通过两个类提供了原始PHP方法的替代方案,允许您以更简单的方式与HTTP请求和响应进行交互。

ob娱乐下载Symfony请求对象

请求类是HTTP请求消息的面向对象表示形式。有了它,所有的请求信息都触手可及:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
使用ob娱乐下载组件HttpFoundation请求请求=请求::createFromGlobals ();//被请求的URI(例如/about)减去任何查询参数请求->getPathInfo ();//分别获取$_GET和$_POST变量请求->查询->get (“id”);请求->请求->get (“类别”“默认类别”);//获取$_SERVER变量请求->服务器->get (“HTTP_HOST”);//获取一个UploadedFile实例,由"attachment"标识请求->文件->get (“附件”);//获取$_COOKIE值请求->饼干->get (“PHPSESSID”);//检索一个HTTP请求头,带有规范化的小写键请求->->get (“主机”);请求->->get (“content_type”);请求->getMethod ();//例如GET, POST, PUT, DELETE或HEAD请求->getLanguages ();//客户端接受的语言数组

作为奖励,请求类在后台执行了许多您永远不需要担心的工作。例如,isSecure ()方法检查三个PHP中不同的值可以指示用户是否通过安全连接(即HTTPS)连接。

ob娱乐下载Symfony响应对象

ob娱乐下载Symfony还提供了一个响应类:HTTP响应消息的简单PHP表示。这允许你的应用程序使用一个面向对象的接口来构造需要返回给客户端的响应:

12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载组件HttpFoundation响应响应反应();响应->setContent (身体的< html > < > < h1 > Hello world !< / h1 > < /身体> < / html >”);响应->setStatusCode(响应::并);//设置HTTP响应头响应->->集(“内容类型”“text / html”);//打印后面跟着内容的HTTP头响应->send ();

也有几种回应子类帮助你回归JSON重定向流文件下载和更多。

提示

请求而且响应类是称为ob娱乐下载symfony / http-foundation你可以用在任何PHP项目。它还包含处理会话、文件上传等的类。

如果Sob娱乐下载ymfony没有提供其他任何东西,那么您已经拥有了一个用于轻松访问请求信息的工具包和一个用于创建响应的面向对象接口。即使在学习Symfony中许多强大的特性时,也要记住应用程序的目标始终是ob娱乐下载解释请求并根据应用程序逻辑创建适当的响应

从请求到响应的过程

与HTTP本身一样,使用请求而且响应Objects非常简单。构建应用程序的难点在于编写介于两者之间的内容。换句话说,真正的工作是编写解释请求信息并创建响应的代码。

您的应用程序可能会做很多事情,比如发送电子邮件、处理表单提交、将内容保存到数据库、呈现HTML页面以及使用安全性保护内容。如何管理所有这些并保持代码的组织性和可维护性?ob娱乐下载Symfony的创建就是为了帮助您解决这些问题。

前置控制器

传统上,在构建应用程序时,站点的每个“页面”都是它自己的物理文件(例如。index . phpcontact.php等)。

这种方法有几个问题,包括url的不灵活性(如果您想更改怎么办?blog.php欧宝平台是合法的吗news.php而不会破坏所有的链接?)以及每个文件必须手动包含一些核心文件集,以便安全性、数据库连接和站点的“外观”保持一致。

更好的解决方案是使用前端控制器:一个单独的PHP文件处理进入应用程序的每个请求。例如:

/ index . php 执行index . php
/ index . php /联系 执行index . php
/ index . php /博客 执行index . php

提示

通过使用重写规则Web服务器配置,index . php你将拥有漂亮、干净的url(例如:/显示).

现在,每个请求都以完全相同的方式处理。前端控制器不是单独的url执行不同的PHP文件,而是总是不同的url到应用程序不同部分的路由是在内部完成的。

一个非常简单的前端控制器可能是这样的:

12 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / index . php使用ob娱乐下载组件HttpFoundation请求使用ob娱乐下载组件HttpFoundation响应请求=请求::createFromGlobals ();路径请求->getPathInfo ();//被请求的URI路径如果(in_array (路径数组' / '))) {响应响应(“欢迎来到主页。”);}elseif' /接触'===路径) {响应响应(“联系我们”);}其他的响应响应(“未找到页面。”、响应::HTTP_NOT_FOUND);}响应->send ();

这是更好,但这仍然是大量的重复工作!幸运的是,Symfony可ob娱乐下载以再次提供帮助。

Symfob娱乐下载ony应用程序流

Syob娱乐下载mfony框架应用程序使用前置控制器文件。但在里面,ob娱乐下载负责处理每个传入的请求并找出该做什么:

ob娱乐下载Symfony请求流

传入的请求由路由组件并传递给返回的PHP函数响应对象。

这可能还没有意义,但随着你继续阅读,你会了解到路线而且控制器:创建页面的两个基本部分。但是当你继续学习的时候,不要忘记这一点如何当你的应用程序变得复杂时,你的工作总是一样的:从请求中读取信息并使用它来创建响应。

概要:请求-响应流

以下是我们目前了解到的情况:

  1. 客户端(例如浏览器)发送一个HTTP请求;
  2. 每个请求执行相同的单个文件(称为“前端控制器”);
  3. 前端控制器启动Symfony并传递请求信息;ob娱乐下载
  4. 在内部,Symfony使ob娱乐下载用路线而且控制器为页面创建Response(我们很快就会学到这些!);
  5. ob娱乐下载Symfony转动你的响应对象转换为文本头和内容(即HTTP响应),这些内容被发送回客户端。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。