簡體   English   中英

使用Play框架覆蓋HTTP方法

[英]Override HTTP method with Play framework

一些Web框架提供了使用隱藏表單字段“覆蓋”HTTP方法的可能性:

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

是否可以使用Play框架覆蓋HTTP方法?

注意:這僅適用於Play 1.x.

查看Router.route()方法的源代碼 ,它在查詢字符串中使用x-http-method-override參數。 根據此錯誤報告,您還應該能夠使用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進行確認。

在Play2中,這是不可能的,創作者已表示沒有計划支持它。 您必須手動攔截請求並通過覆蓋Global.onRouteRequest更改HTTP方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM