以编程方式从谷歌应用引擎端点方法中获取基本网址

时间:2014-04-22 11:31:26

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

我正在创建Google Appengine端点api。在其中一个端点方法中,我需要检测基本URL。我怎么能用Java做到这一点?

2 个答案:

答案 0 :(得分:1)

根据文档,您可以将注入的类型传递到API方法中。对于例如您可以将HTTPServletRequest对象注入API方法。 https://developers.google.com/appengine/docs/java/endpoints/paramreturn_types#injected_types

获得Request对象后,您可以根据需要获取基本URL。对于例如

StringBuffer url = req.getRequestURL();
String uri = req.getRequestURI();
String ctx = req.getContextPath();
String base = url.substring(0, url.length() - uri.length() + ctx.length()) + "/";

答案 1 :(得分:0)

必要的进口

import com.google.appengine.api.utils.SystemProperty;
import com.google.appengine.tools.development.LocalEnvironment;
import com.google.apphosting.api.ApiProxy;
import com.google.common.collect.Maps;

检索当前主机名(基本网址)

ApiProxy.Environment proxyEnvironment = ApiProxy.getCurrentEnvironment();
Map<String, Object> attributes = proxyEnvironment.getAttributes();
String hostname = (String) attributes.get(LocalEnvironment.DEFAULT_VERSION_HOSTNAME);

在当前主机名(当前版本+基本网址)上包含版本

String version = SystemProperty.applicationVersion.get();
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
    hostname = String.format("%s.%s", version , hostname );
}