24

我想知道是否可以在 Cloud Endpoint 中收集原始 HTTP 数据。我似乎在 Google 的文档中找不到任何内容,但 App Engine 的 Twitter 告诉我它是(https://twitter.com/app_engine/status/305747445017624576)。如果是这样,我可以请它的语法吗?我知道 GCE 的 API 仍处于早期阶段,任何帮助将不胜感激。

4

2 回答 2

48

将 HttpServletRequest 参数添加到您的端点方法,例如

@ApiMethod
public MyResponse getResponse( HttpServletRequest req, @Named("infoId") String infoId ) {
    // Use 'req' as you would in a servlet, e.g.
    String ipAddress = req.getRemoteAddr();
    ...
}
于 2013-02-24T22:11:17.047 回答
0

该请求在 Endpoints 方法中作为注入类型可用。HttpServletRequest当您在具有该类型的方法上声明一个参数时,该类型的对象会不可见地注入到您的 Java 方法定义中,如下所示:

import javax.servlet.http.HttpServletRequest;
...

@ApiMethod
public MyMethod getRequest( HttpServletRequest req ) {

HttpServletRequest myRequest = req;
...
}

这记录在这里:

https://cloud.google.com/endpoints/docs/frameworks/java/parameter-and-return-types#injected_types

引用上述文档:

注入类型

注入类型是那些接受 Cloud Endpoints Frameworks 特殊处理的类型。如果将此类类型用作方法参数,则它不会成为 API 的一部分。相反,该参数由 Endpoints Frameworks 填充。

注入的类型如下:

com.google.appengine.api.users.User

javax.servlet.http.HttpServletRequest

javax.servlet.ServletContext

于 2019-06-17T01:36:55.363 回答