ob娱乐下载Symfony和HTTP基本原理

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 4.4,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

ob娱乐下载Symfony和HTTP基本原理

好消息!欧宝平台是合法的吗当你学习Symfony,你ob娱乐下载学习的基础网络。ob娱乐下载Symfony密切模仿HTTP请求-响应流:基本几乎背后的范式所有在网络上交流。

在这篇文章中,您将通过HTTP基础,找出如何在Symfony应用它们。ob娱乐下载

在HTTP请求和响应

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

HTTP是术语用来描述这种基于文本的语言。您的服务器的目的是总是理解文本的请求和返回的文本响应。

ob娱乐下载Symfony从头构建这一现实。不管你意识到没有,HTTP是你每天使用。Symfoob娱乐下载ny,您将学习如何掌握它。

步骤1:客户端发送一个请求

每一次谈话都在网络上开始的请求。请求是一个文本消息由一个客户端(例如浏览器、智能手机应用程序等)在一个特殊的格式称为HTTP。客户端发送请求到服务器,然后等待响应。

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

在HTTP-speak,这个HTTP请求会看起来像这样:

1 2 3 4
GET / HTTP / 1.1主持人:xkcd.com接受:text / html用户代理:Mozilla / 5.0 (Macintosh)

这些几行沟通一切必要对哪些资源客户端请求。一个HTTP请求的第一行是最重要的,因为它包含两个重要的事情:HTTP方法(GET)和URI (/)。

URI(例如/,/联系等)是唯一的地址或地址标识的资源客户想要的。(如HTTP方法。得到)定义了客户机想要什么与资源。HTTP方法(也称为动词)定义的一些常见方法,客户机可以行动的资源——最常见的HTTP方法是:

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

记住这一点,你可以想象一个HTTP请求的样子来删除一个特定的博客,例如:

1
删除/博客/ 15 HTTP / 1.1

请注意

实际上有九个HTTP规范定义的HTTP方法,但他们中的许多人并不广泛使用或支持。在现实中,许多现代浏览器只支持帖子得到在HTML表单。各种其他支持XMLHttpRequest

除第一行外,一个HTTP请求总是包含其他行信息请求。标题可以提供一个广泛的信息,如主机被请求的资源(主机),响应客户端接受格式(接受)和应用程序客户端使用的请求(用户代理)。许多其他的标题存在,可以在维基百科上发现的HTTP报头字段列表篇文章。

步骤2:服务器返回一个响应

一旦服务器接收到请求时,它知道客户需要哪些资源(通过URI)和客户机想要做些什么资源(通过该方法)。例如,在一个GET请求的情况下,服务器准备资源并返回一个HTTP响应。考虑来自xkcd web服务器的响应:

转换成HTTP响应发送回浏览器将看起来像这样:

1 2 3 4 5 6 7 8
HTTP / 1.1 200 OK日期:坐,02年服务器:格林尼治时间2011年4月21:05:05 lighttpd / 1.4.19 - type: text / html

HTTP响应包含所请求的资源(本例中的HTML内容),以及其他信息的反应。第一行是特别重要的,包含HTTP响应状态码(200在这种情况下)。

请求的状态码通信总体的结果返回到客户机。请求成功了吗?有一个错误?表明成功存在不同的状态代码,一个错误或客户需要做些什么(如重定向到另一个页面)。检查HTTP状态代码的列表

这样的请求,HTTP响应包含额外的信息称为HTTP头。的身体相同的资源可能返回多个不同的格式,比如HTML、XML或JSON和内容类型头使用互联网媒体类型text / html告诉客户端被返回的格式。你可以看到一个常见的媒体类型列表从IANA。

许多其他头文件存在,其中一些是非常强大的。例如,某些头文件可用于创建一个强大的缓存系统。

请求、响应和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请求消息,而是准备superglobal变量(如$ _SERVER$ _GET)从请求中包含的所有信息。类似地,而不是返回HTTP-formatted文本响应,您可以使用PHP函数来创建响应头并打印的实际内容的内容部分响应消息。PHP将创建一个真正的HTTP响应并返回到客户端:

1 2 3 4 5 6 7
HTTP / 1.1 200 OK日期:坐,格林尼治时间2011年4月3日02:14:33服务器:Apache / 2.2.17 (Unix)的content - type: text / html请求的URI是:/测试吗?foo ob娱乐下载= symfony“foo”参数的值是:symfony

在Symfony请求和响应ob娱乐下载

ob娱乐下载Symfony提供了一个替代的原材料PHP方法通过两类允许您与HTTP请求和响应在一个更简单的方法。

ob娱乐下载Symfony请求对象

请求类是面向对象表示法的HTTP请求消息。,你有所有请求的信息在你的指尖:

1 2 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(例如/关于)-任何查询参数美元请求- >getPathInfo ();/ /获取$ _GET分别和$ _POST变量美元请求- >查询- >get (“id”);美元请求- >请求- >get (“类别”,“默认类别”);/ /获取$ _SERVER变量美元请求- >服务器- >get (“HTTP_HOST”);/ /检索的实例UploadedFile被“附件”美元请求- >文件- >get (“附件”);/ /检索_COOKIE美元价值美元请求- >饼干- >get (“PHPSESSID”);/ /获取一个HTTP请求头,规范化,小写字母键美元请求- >- >get (“主机”);美元请求- >- >get (“内容类型”);美元请求- >getMethod ();/ /例如GET、POST、PUT、DELETE或头美元请求- >getLanguages ();/ /客户端接受语言的数组

作为奖励,请求类在后台做了很多的工作,你永远不需要担心。例如,isSecure ()方法检查三个用PHP编写的不同的值,可以显示用户是否通过安全连接连接(例如HTTPS)。

ob娱乐下载Symfony响应对象

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

1 2 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本身,使用请求响应对象很简单。构建应用程序的困难的部分是写作之间有什么。换句话说,真正的工作是写的代码解释请求信息和创建响应。

您的应用程序可能很多东西,喜欢发送电子邮件,处理表单提交,保存到数据库,呈现HTML页面和保护内容与安全。你如何管理这一切,仍然保持你的代码便于组织和维护吗?”ob娱乐下载Symfony创建,以帮助您解决这些问题。

前端控制器

传统上,应用程序被建立,每个网站的“页面”是自己的物理文件(如。index . php,contact.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路由到不同的部分是内部完成的。

一个小前端控制器可能会看起来像这样:

1 2 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娱乐下载负责处理每个传入请求,并弄清楚怎么做:

解释传入的请求路由组件并通过PHP函数返回响应对象。

这可能没有意义,但当你继续阅读,你就会了解路线控制器:创建一个页面的两个基本部分。但是当你走,不要忘记,不管如何复杂的应用程序,你的工作总是相同的:读的信息请求并使用它来创建一个响应。

摘要:请求-响应流

这是我们目前学到的:

  1. 一个客户端发送一个HTTP请求(例如,一个浏览器);
  2. 每个请求执行相同的,单一的文件(称为“前端控制器”);
  3. 前端控制器靴子Symfony,并将请求信息;ob娱乐下载
  4. 在内部,Symfony使ob娱乐下载用路线控制器为页面创建响应(我们很快就会了解这些!);
  5. ob娱乐下载Symfony把你响应对象到文本标题和内容(即HTTP响应),发送回客户机。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。