我想知道是否可以在Cloud Endpoint中收集原始HTTP数据。 我似乎无法在Google的文档中找到任何内容,但App Engine的Twitter告诉我它是(https://twitter.com/app_engine/status/305747445017624576)。 如果是这样,我可以请它的语法吗? 我知道GCE的API仍处于早期阶段,非常感谢任何帮助。
答案 0 :(得分:47)
向端点方法添加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();
...
}
答案 1 :(得分: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