有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java用Play框架覆盖HTTP方法

一些web框架提供了使用隐藏表单字段“覆盖”HTTP方法的可能性:

<form method="POST">
  <input type="hidden" type="_method" value="PUT">
  ...
</form>

是否可以用Play框架覆盖HTTP方法


共 (2) 个答案

  1. # 1 楼答案

    注:这是游戏1。只有x

    查看Router.route()方法的source code,它使用查询字符串中的x-http-method-override参数。根据this bug report的说法,您也应该能够使用HTTP头来实现这一点,但我在源代码中看不到这一点

    要使其工作,需要将覆盖添加到请求字符串中。我运行了下面的示例以使其正常工作

    <form action="@{Application.form}?x-http-method-override=PUT" method="POST">
      <input type="submit" type="go" value="go">
    </form>
    

    如果将日志记录级别设置为TRACE,将看到以下输出,显示方法已更改。您应该看到这样的输出

    08:20:34,855 TRACE ~ init: begin
    08:20:34,858 TRACE ~ Route: /application/form - x-http-method-override=PUT
    08:20:34,859 TRACE ~ request method POST overriden to PUT
    08:20:34,860 TRACE ~    - public static void controllers.Application.form()
    08:20:34,861 TRACE ~ init: end true
    

    您还可以检查控制器中的request.method以确认

  2. # 2 楼答案

    在剧本2中,这是不可能的,创作者们认为没有支持它的计划。您必须手动拦截请求,并通过重写Global.onRouteRequest来更改HTTP方法