在Google Cloud Endpoints中获取原始HTTP数据(标题,Cookie等)

时间:2013-02-24 21:24:43

标签: java google-app-engine google-cloud-endpoints

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

2 个答案:

答案 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