我正在创建Google Appengine端点api。在其中一个端点方法中,我需要检测基本URL。我怎么能用Java做到这一点?
答案 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 );
}