我正在App engine standard environment
使用Cloud endpoint framework 2.0
托管移动后端(用Java编写),我可以通过此网址访问https://api-dot-[projectId]-appspot.com/_ah/api/myApi/v1/path
现在我尝试使用自定义域名[api.mydomain.app],在这里我已经完成了:
1-我已在我的appengine设置中添加了此域api.mydomain.app
,现在已经过验证,并且具有由Google管理的有效SSL
2-我已在此域中添加了8条DNS记录(A& AAAA)" mydomain.app"在godaddy如下:
A api xxxxxxx
A api xxxxxxx
A api xxxxxxx
A api xxxxxxx
AAAA api xxxxxxx
AAAA api xxxxxxx
AAAA api xxxxxxx
AAAA api xxxxxxx
我对@
(对于默认服务)和admin
(对于管理服务)有相同的记录,两者都工作得很好
我还有这条记录CNAME * ghs.googlehosted.com
3-我在dispatch.xml中添加了以下记录:
<dispatch>
<!-- Send all Mobile traffic to the API. -->
<url>api.mydomain.app/*</url>
<module>api</module>
</dispatch>
<dispatch>
<!-- Send all Admin traffic to the Admin Platform. -->
<url>admin.harmonica.app/*</url>
<module>admin</module>
</dispatch>
4-此后端的模块名称在appengine-web.xml
中定义为api
5-这是我的API类的定义
@Api(name = "myApi", version = "v1", authenticators = { Authenticator.class },
// scopes = { Constants.EMAIL_SCOPE },
clientIds = { Constants.WEB_CLIENT_ID,
Constants.ANDROID_CLIENT_ID }, description = "API for Harmonica Backend application.")
public class MyApi {...}
6-这就是我在web.xml中定义EndpointsServlet的方法
<servlet-mapping>
<servlet-name>EndpointsServlet</servlet-name>
<url-pattern>/_ah/api/*</url-pattern>
</servlet-mapping>
所以每当我尝试访问https://api.mydomain.app/myApi/v1/path
或https://api.mydomain.app/path
时,我都会这么做
它向我展示了这个回应:
Error: Not Found
The requested URL /dating was not found on this server.
在服务器日志中,我看到了这个No handlers matched this URL.
那你可以帮助我吗?我错过了什么吗?
提前致谢!
答案 0 :(得分:0)
我已将EndpointsServlet的url-pattern修改为:
<servlet-mapping>
<servlet-name>EndpointsServlet</servlet-name>
<!-- This is for accessing the API by the domain name -->
<url-pattern>/*</url-pattern>
<!-- This is for the backward compatibility -->
<url-pattern>/_ah/api/*</url-pattern>
</servlet-mapping>
现在我可以从自定义域访问我的API了。