编辑:虽然我下面的回答并没有错,但它根本不完整。基本上,当您添加@Named
注释时,参数将包含在请求 URL 的末尾:
http://endpointurl?parameter1=xxx¶meter2=yyy
如果您不使用@Named
,该参数将被包含(注入)在 POST 数据中。通过使用一些命名参数和一些未命名参数创建一个测试端点,并使用一些请求浏览器工具(例如 Firebug),您可以非常清楚地看到它。
显然,支持@Named
注解的参数类型只有少数(我认为是 int、long、String、Boolean 及其对应的数组)。
我在下面的原始答案中所说的不是错误的,但不是完整的答案...
原答案:据我了解,@Named 的目的是在请求 URL 中指明参数的名称。这样,参数可以在您的应用程序中具有名称,并且在端点中公开其他名称。
这与 GSON 中的 @SerializedName 或 JDO 中的 @Column 几乎相同。所有这些注释都允许为您的参数使用 2 个不同的名称,一个在您的应用程序中,遵循 Java 命名约定,另一个名称遵循其他约定,例如 URL 或 JSON 的...
在您的示例中,您无法注意到差异,但您可以使用以下方法:
@ApiMethod(
name = "remove",
path = "remove",
httpMethod = HttpMethod.DELETE)
public void removeFoo(@Named("my_app_id") String myAppID){}
在这种情况下,URL 中的参数名称将是:
https://mygaeappid.appspot.com/_ah/api/yourapi/v1/remove?my_app_id=1234
不,@Named 对象并不总是必须是 ApiMethod 中定义的路径的一部分。