我可以使用注释将控制器方法标记为Play中的POST吗?

rip*_*234 5 java http-post playframework

我在任何地方都找不到 - 我可以告诉Play!应该(仅)通过HTTP POST访问特定的控制器方法?

像C#的Asp.Net MVC中的HttpPost属性

public class MyController extends Controller {

  @Post
  public void addPerson(String name, String address) {
  }
}
Run Code Online (Sandbox Code Playgroud)

更新 - 我不明白添加POST路由的做法:

  1. POST请求无需添加此类路由即可运行.
  2. 因为该方法仍然被"Catch all"GET规则捕获,所以即使添加POST路由也不会阻止对此方法的GET请求.

Mar*_*ier 1

你可以这样做:

public static void onlyPost() {
  if (request.method.equals("POST")) {
     // ... Do stuff
     render(); 
  }
  else
    forbidden();
}
Run Code Online (Sandbox Code Playgroud)

但请记住,您的代码和路线文件可能不同步。

另外,您可以在路由文件中使用 Groovy 代码,因此无需重复。

# Catch all
#{if play.mode.isDev()}
*   /{controller}/{action}       {controller}.{action}
#{/if}
Run Code Online (Sandbox Code Playgroud)