0

我已经使用谷歌提供的启动代码启动了一个谷歌云端点 v2 项目,该代码公开了一个名为“echo”的 API。

我的目标是添加另一个公开的类(每个业务模块一个类/api 名称)。部署后,对新 API 的所有调用都不会生成“未找到”错误。

作为一种解决方案,我尝试查看 web.xml 并进行了以下更改。

初始 WEB.XML 版本:

<!-- Route API method requests to the backend. -->
<servlet-mapping>
    <servlet-name>EndpointsServlet</servlet-name>
    <url-pattern>/_ah/api/*</url-pattern>
</servlet-mapping>

我添加了新的 servlet 并尝试添加新的 servlet 映射,如下所示:

<servlet-mapping>
    <servlet-name>EndpointsServlet</servlet-name>
    <url-pattern>/_ah/api/echo/*</url-pattern>
</servlet-mapping>

 <servlet-mapping>
    <servlet-name>UserEndpointsServlet</servlet-name>
    <url-pattern>/_ah/api/user/*</url-pattern>
</servlet-mapping>

现在将 /echo/* 添加到初始 servlet 映射后,ECHO 工作服务停止服务,系统仍然无法调用新服务。

有谁知道我做错了什么以及解决方案是什么?我认为端点 v2 框架不支持此功能,因为进行这种分离似乎是一种很好的设计实践。

4

1 回答 1

0

您应该使用相同的 servlet,将 init-param 与您需要的所有 Endpoint 类一起使用:

    <init-param>
        <param-name>services</param-name>
        <param-value>com.example.echo.Echo,com.example.echo.Echo2</param-value>
    </init-param>

你不应该在你的 web.xml 中使用/_ah/api/echo/*or 。/_ah/api/user/*相反,使用@Api(name = "echo")or@Api(name = "user")并将 EndpointsServlet 绑定到/_ah/api/*.

于 2017-08-24T22:50:14.293 回答