Getting raw HTTP Data (Headers, Cookies, etc) in Google Cloud Endpoints

前端 未结 2 1273
你的背包
你的背包 2020-11-29 06:27

I am wondering if it is possible to collect raw HTTP data in a Cloud Endpoint. I can\'t seem to find anything in Google\'s documentation, but App Engine\'s Twitter told me

相关标签:
2条回答
  • 2020-11-29 07:08

    Add an HttpServletRequest parameter to your endpoint method, e.g.

    @ApiMethod
    public MyResponse getResponse( HttpServletRequest req, @Named("infoId") String infoId ) {
        // Use 'req' as you would in a servlet, e.g.
        String ipAddress = req.getRemoteAddr();
        ...
    }
    
    0 讨论(0)
  • 2020-11-29 07:16

    The request is available in an Endpoints method as an injected type. An object of type HttpServletRequest is invisibly injected into your Java method definition when you declare a parameter on the method that has that type, like this:

    import javax.servlet.http.HttpServletRequest;
    ...
    
    @ApiMethod
    public MyMethod getRequest( HttpServletRequest req ) {
    
    HttpServletRequest myRequest = req;
    ...
    }
    

    This is documented here:

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

    Quoting from the above documentation:

    Injected types

    Injected types are those types that receive special treatment by Cloud Endpoints Frameworks. If such a type is used as a method parameter, it isn't made a part of the API. Instead, the parameter is filled in by Endpoints Frameworks.

    The injected types are the following:

    com.google.appengine.api.users.User

    javax.servlet.http.HttpServletRequest

    javax.servlet.ServletContext

    0 讨论(0)
提交回复
热议问题