gpt4 book ai didi

google-cloud-endpoints - Google Cloud Endpoints 中 @Named 的用途

转载 作者:行者123 更新时间:2023-12-01 01:10:30 27 4
gpt4 key购买 nike

我不清楚 @Named 在 Google Cloud Endpoints 中的用途。文档说:

This annotation indicates the name of the parameter in the requestthat gets injected here. A parameter that is not annotated with @Namedis injected with the whole request object. ... This sample shows theuse of @Named:

 @ApiMethod(
name = "foos.remove",
path = "foos/{id}",
httpMethod = HttpMethod.DELETE)
public void removeFoo(@Named("id") String id){}

where @Named specifies that only the id parameter is injected in therequest.


如果在此示例中未使用 @Named,那么“注入(inject)”是什么?与“整个请求”?就此而言,究竟什么是“注入(inject)”?什么是“整个请求”? @Named 对象是否总是必须是 @Apimethod 中定义的路径的一部分?
谢谢。

最佳答案

编辑 :虽然我下面的回答并没有错,但它根本不完整。基本上当你添加 @Named注解,参数将包含在请求 URL 的末尾:

http://endpointurl?parameter1=xxx&parameter2=yyy

如果你不使用 @Named ,参数将被包含(注入(inject))在 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 中定义的路径的一部分。

关于google-cloud-endpoints - Google Cloud Endpoints 中 @Named 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680799/

27 4 0