将 Google 云端点框架 2.0 与自定义域一起使用
using Google cloud endpoint framework 2.0 with custom domain
我在 App engine standard environment
使用 Cloud endpoint framework 2.0
托管移动后端(用 Java 编写),我可以通过此 URL https://api-dot-[projectId]-appspot.com/_ah/api/myApi/v1/path
现在我正在尝试使用自定义域 [api.mydomain.app],这里是我所做的:
1- 我已经在我的应用程序引擎设置中添加了这个域 api.mydomain.app
并且它现在已经过验证并且具有由 google
管理的有效 SSL
2- 我在 godaddy 的这个域 "mydomain.app" 中添加了 8 条 DNS 记录(A 和 AAAA),如下所示:
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 class
@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.
所以你能帮帮我吗?我错过了什么吗?
提前致谢!
我已将 EndpointsServlet 的 url 模式修改为:
<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。
我在 App engine standard environment
使用 Cloud endpoint framework 2.0
托管移动后端(用 Java 编写),我可以通过此 URL https://api-dot-[projectId]-appspot.com/_ah/api/myApi/v1/path
现在我正在尝试使用自定义域 [api.mydomain.app],这里是我所做的:
1- 我已经在我的应用程序引擎设置中添加了这个域 api.mydomain.app
并且它现在已经过验证并且具有由 google
2- 我在 godaddy 的这个域 "mydomain.app" 中添加了 8 条 DNS 记录(A 和 AAAA),如下所示:
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 class
@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.
所以你能帮帮我吗?我错过了什么吗?
提前致谢!
我已将 EndpointsServlet 的 url 模式修改为:
<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。