Symfony2CookBook:如何在路由中使用GET和POST以外的HTTP方法

简介:

How to use HTTP Methods beyond GET and POST in Routes

The HTTP method of a request is one of the requirements that can be checked when seeing if it matches a route. This is introduced in the routing chapter of the book "Routing" with examples using GET and POST. You can also use other HTTP verbs in this way. For example, if you have a blog post entry then you could use the same URL path to show it, make changes to it and delete it by matching on GET, PUT and DELETE.

在查看是否匹配路由时,请求中的HTTP方法将作为请求的一部分而被检查。这在"Routing"书中的路由章节通过使用GET和POST举例介绍过。您通过这样方式来使用其它HTTP动词。例如,如果您有一个博客文章条目,然后您就可以使用相同的URL路径,通过匹配GET、PUT和DELETE来显示、修改和删除它。

1
2
3
4
5
6
7
8
9
10
11
12
blog_show:
     path:     /blog/{slug}
     defaults: { _controller: AcmeDemoBundle:Blog:show }
     methods:   [GET]
blog_update:
     path:     /blog/{slug}
     defaults: { _controller: AcmeDemoBundle:Blog:update }
     methods:   [PUT]
blog_delete:
     path:     /blog/{slug}
     defaults: { _controller: AcmeDemoBundle:Blog: delete  }
     methods:   [DELETE]

Faking the Method with _method(通过_method伪造方法)

The _method functionality shown here is disabled by default in Symfony 2.2 and enabled by default in Symfony 2.3. To control it in Symfony 2.2, you must call Request::enableHttpMethodParameterOverridebefore you handle the request (e.g. in your front controller). In Symfony2.3, use the http_method_override option.

_method 在这里显示的功能在Symfony 2.2中默认是禁用的,而在Symfony 2.3中默认是启用的。在Symfony 2.2中要控制它,您必须在您处理请求之前(如在您的前端控制器中)调用Request::enableHttpMethodParameterOverride。在Symfony 2.3中,则使http_method_override 配置项。


Unfortunately, life isn't quite this simple, since most browsers do notsupport sending PUT and DELETE requests. Fortunately Symfony2 provides youwith a simple way of working around this limitation. By including a _method parameter in the query string or parameters of an HTTP request, Symfony2 willuse this as the method when matching routes. Forms automatically include a hidden field for this parameter if their submission method is not GET or POST.See the related chapter in the forms documentationfor more information.

不幸的是,生活并非如此简单,因为大多数浏览器并不支持发送 PUT 和 DELETE 请求。幸运的是Symfony2 为您提供了一个简单方法来绕过这一限制。通过在HTTP请求中的查询字符串或参数中包含 _method 参数,Symfony2将在匹配路由时将其作为方法使用。如果表单提交方法不是GET或POST时,它们将自动为这一参数创建一个隐藏字段。更多情况请参见: the related chapter in the forms documentation




本文转自 firehare 51CTO博客,原文链接:http://blog.51cto.com/firehare/1257690,如需转载请自行联系原作者
相关文章
|
1月前
HTTP协议探究:常用方法一网打尽
总的来说,HTTP协议的命令犹如一把钥匙,解锁了互联网世界的大门。它是规则,也是工具,了解了它,就等于掌握了互联网的一把通行证。我们每天都在用,也常常无视它,但是只有深刻理解了它,才能更好地运用它。如此,我们的互联网世界旅程就会变得更加顺畅,更加有趣。
53 14
|
4月前
|
JSON API 网络架构
HTTP常见的请求方法、响应状态码、接口规范介绍
本文详细介绍了HTTP常见的请求方法、响应状态码和接口规范。通过理解和掌握这些内容,开发者可以更好地设计和实现W
648 83
|
3月前
|
缓存 安全 Java
深入解析HTTP请求方法:Spring Boot实战与最佳实践
这篇博客结合了HTTP规范、Spring Boot实现和实际工程经验,通过代码示例、对比表格和架构图等方式,系统性地讲解了不同HTTP方法的应用场景和最佳实践。
260 5
|
4月前
|
API 开发者
了解 HTTP 的PUT 与 POST方法的综合指南
HTTP PUT 和 POST 方法是构建 Web 应用与 API 的核心工具,用于资源的创建与更新。PUT 方法通过指定 URL 更新或创建完整资源,具有幂等性;而 POST 方法更灵活,主要用于创建新资源,但不具备幂等性。本文详细对比了两者在请求体、URL 使用、资源处理等方面的区别,并提供了实际应用示例,帮助开发者根据场景选择合适的方法以优化 API 设计。
|
4月前
|
缓存 安全 API
为什么 HTTP GET 方法不使用请求体?
本指南深入探讨了为什么HTTP GET方法通常不使用请求体,解释了GET方法的主要用途及其设计原则。GET请求旨在通过URL安全、幂等地检索数据,避免因请求体带来的复杂性和潜在问题。尽管HTTP/1.1规范允许GET请求包含请求体,但这并不常见且可能引发副作用。掌握这些原则有助于开发者在API开发中更高效地使用GET请求。
|
4月前
|
API
掌握 HTTP 请求的艺术:理解 cURL GET 语法
掌握 cURL GET 请求的语法和使用方法是 Web 开发和测试中的基本技能。通过灵活运用 cURL 提供的各种选项,可以高效地与 API 进行交互、调试网络请求,并自动化日常任务。希望本文能帮助读者更好地理解和使用 cURL,提高工作效率和代码质量。
164 7
|
6月前
|
关系型数据库 MySQL Docker
docker pull mysql:8.0.26提示Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF错误
docker pull mysql:8.0.26提示Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF错误
|
6月前
|
数据采集 API 定位技术
合适HTTP代理优化效率的方法与好处
随着互联网发展,使用HTTP动态代理IP的需求日益增加。选择稳定、支持隧道代理、速度快、多样性高、支持HTTPS、API集成便捷、可更换性强、并发支持好且IP池大的代理IP,能有效提升爬虫效率和成功率。掌握这些实用技巧,有助于更好地利用代理IP进行数据采集。
134 10
|
Web App开发 缓存 网络协议
总结http get和post的区别
原文:总结http get和post的区别 这个问题几乎面试的时候都会问到,是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎。 什么是http? get、post常见的区别 get和post不同点的误区 附录常见的http状态码 1.
1110 0
|
Web App开发 缓存 网络协议
总结http get和post的区别
这个问题几乎面试的时候都会问到,是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎。 什么是http? get、post常见的区别 get和post不同点的误区 附录常见的http状态码 1.
2146 0