Rest 如何根据Accept标头使用不同的表示?

Rest 如何根据Accept标头使用不同的表示?,rest,playframework-2.1,Rest,Playframework 2.1,使用PlayFramework2.1,我想根据请求的Accept头在行为上做一些小的变化。我唯一能想到的是: 形态/路线 GET /widgets controllers.WidgetController.getWidgets() WidgetController.java public class LoginController extends Controller { public static Result loginUser() { if (ctx().request(

使用PlayFramework2.1,我想根据请求的Accept头在行为上做一些小的变化。我唯一能想到的是:

形态/路线

GET  /widgets  controllers.WidgetController.getWidgets()
WidgetController.java

public class LoginController extends Controller {
  public static Result loginUser() {
    if (ctx().request().headers().get("Accept")[0].equals("application/json")) {
      // ... json-specific logic
    }

    // common processing code

    if (ctx().request().headers().get("Accept")[0].equals("application/json")) {
      return ok();
    } else {
      return redirect(...);
    }
  }
}

看起来很肮脏,很程序化。关于惯用的“播放”方式有什么建议吗?

您可以测试
request().是否接受(“应用程序/json”)
,但对于每种内容类型,使用if-else进行检查似乎是可行的。

我希望Play有类似JAX-RS的东西,在那里我可以对它产生/消耗的内容进行注释。