Php Symfony2是否正确处理restful url?我是否应该使用restful url?

Php Symfony2是否正确处理restful url?我是否应该使用restful url?,php,symfony,url,restful-url,http-delete,Php,Symfony,Url,Restful Url,Http Delete,我正试图找出设计我的URL的最佳方法。 以下是我迄今为止所做的工作: account_index: pattern: /Accounts/ defaults: { _controller: "CoreBundle:Account:index" } requirements: { _method: get } account_create: pattern: /Accounts/ defaults: { _controller: "CoreBundle

我正试图找出设计我的URL的最佳方法。 以下是我迄今为止所做的工作:

account_index:
    pattern:  /Accounts/
    defaults: { _controller: "CoreBundle:Account:index" }
    requirements: { _method: get }

account_create:
    pattern:  /Accounts/
    defaults: { _controller: "CoreBundle:Account:create" }
    requirements: { _method: post }

account_read:
    pattern:  /Accounts/{id}
    defaults: { _controller: "CoreBundle:Account:show" }
    requirements: { _method: get }

account_update:
    pattern:  /Accounts/{id}
    defaults: { _controller: "CoreBundle:Account:update" }
    requirements: { _method: put }

account_delete:
    pattern:  /Accounts/{id}
    defaults: { _controller: "CoreBundle:Account:delete" }
    requirements: { _method: delete }
在测试了我所做的之后,我意识到更新和删除不起作用(总是调用account_read)。。。在谷歌搜索我的问题后,我发现并非所有浏览器都支持PUT和DELETE方法。。。将来可能会被丢弃

然后我读到RubyonRails通过做一些魔术在所有浏览器上支持这两种方法

所以我想知道,Symfony2能像ruby那样处理PUT和DELETE吗? 及
我应该使用restful url吗?

是的,symfony2完全符合restful

我不知道rails的情况,但Symfony2使用不同的方法处理HTTP方法检测:

  • 首先从中获取请求\u方法
  • 然后,如果且只有method==POST,则从
    X-HTTP-method-OVERRIDE
    头获取方法(回退到
    \u method
    请求参数)
它之所以对
POST
进行检查,是因为浏览器只能发送GET或POST请求

与rails和/或symfony1不同的是,没有辅助工具可以使用相应的方法生成链接或表单。由您向应用程序生成有效的请求


PS:关于您的路由,您应该用大写字母在_方法上写下您的需求。

如果您计划实现RESTful服务,您可以看看。他们已经有了相当好的url命名约定,您可能会同意,还有许多其他可以简化开发过程的东西


是的,Symfony2可以处理PUT和DELETE请求。

关键不是Symfony能做什么或不能做什么,关键是“Restful url”如何处理当前可用的浏览器

有些浏览器不允许您使用某些HTTP方法(如put或delete),因此是的,一个好的实现将使用GET、POST、put、delete和PATCH,但您会遇到一些用户的问题:)


一如既往。。。浏览器…

您知道为什么即使我的表单方法是“删除”,Symfony也会执行account\u read而不是account\u delete吗?即使您的html包含
,浏览器也不会发送删除请求。您可以使用