我们在应用程序中成功使用了Endpoints V1几年。现在,当尝试迁移到Endpoints V2时,它突然停止,只是简单地找不到EndpointsServlet而只是总是返回404.
这仍然是一个已知问题(对于某些应用)或者我该如何解决此问题?
404响应如下:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "\u003chtml\u003e\u003chead\u003e\n\u003cmeta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\"\u003e\n\u003ctitle\u003e404 Not Found\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody text=#000000 bgcolor=#ffffff\u003e\n\u003ch1\u003eError: Not Found\u003c/h1\u003e\n\u003c/body\u003e\u003c/html\u003e\n"
}
],
"code": 404,
"message": "\u003chtml\u003e\u003chead\u003e\n\u003cmeta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\"\u003e\n\u003ctitle\u003e404 Not Found\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody text=#000000 bgcolor=#ffffff\u003e\n\u003ch1\u003eError: Not Found\u003c/h1\u003e\n\u003c/body\u003e\u003c/html\u003e\n"
}
}
答案 0 :(得分:1)
解决方法是在使用Endpoints V2部署应用时使用全新的未使用版本名称,而不是:
https://test-dot-[app_id].appspot.com (this used previously Endpoints V1)
使用全新的版本名称,例如
https://test-new-dot-[app_id].appspot.com
如上所述:https://cloud.google.com/endpoints/docs/known-issues
" ...您当前必须部署到新的App Engine应用程序版本。重用旧的应用版本可能会与旧的端点部署冲突..."
答案 1 :(得分:0)
当我仍然将SystemServiceServlet配置为使用旧的url模式时,我遇到了这个问题。
正确:
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/api/*</url-pattern>
</servlet-mapping>
不正确:
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/spi/*</url-pattern>
</servlet-mapping>
V2的servlet类也更改为:com.google.api.server.spi.EndpointsServlet
。
答案 2 :(得分:0)
确定
<!-- Wrap the backend with Endpoints Frameworks v2. -->
<servlet>
<servlet-name>EndpointsServlet</servlet-name>
<servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value>com.example.echo.Echo,com.example.echo.Foo</param-value>
</init-param>
</servlet>
<!-- Route API method requests to the backend. -->
<servlet-mapping>
<servlet-name>EndpointsServlet</servlet-name>
<url-pattern>/_ah/api/*</url-pattern>
</servlet-mapping>
您在web.xml,pom.xml,appengine-web.xml中正确且一致的{ProjectId}。如果使用gcloud shell,请检查当前的活动配置及其项目。
为了安全起见,请在从旧框架V1迁移到V2的同时在新版本上部署您的应用。