Подтвердить что ты не робот

Получение необработанных HTTP-данных (заголовков, файлов cookie и т.д.) В облачных конечных точках Google

Мне интересно, можно ли собирать необработанные HTTP-данные в Cloud Endpoint. Я не могу найти ничего в документации Google, но App Engine Twitter сказал мне, что это было (https://twitter.com/app_engine/status/305747445017624576). Если да, могу ли я получить синтаксис? Я знаю, что API для GCE все еще находится на ранней стадии, и любая помощь будет с благодарностью.

4b9b3361

Ответ 1

Добавьте параметр 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();
    ...
}

Ответ 2

Запрос доступен в методе 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

Цитирование из вышеуказанной документации:

Введенные типы

Внедренные типы - это те типы, которые обрабатываются фреймворками оконечных точек облака. Если такой тип используется в качестве параметра метода, он не становится частью API. Вместо этого параметр заполняется фреймворками конечных точек.

Введены следующие типы:

com.google.appengine.api.users.User

javax.servlet.http.HttpServletRequest

javax.servlet.ServletContext