Java 具有自定义路径和API名称的Google云端点

Java 具有自定义路径和API名称的Google云端点,java,google-cloud-endpoints,Java,Google Cloud Endpoints,在Google云端点中,资源的路径由以下公式给出: 在web.xml中为EndpointsServlet配置的路径(例如api) @API注释中“名称”属性下给出的名称(例如myapi) 版本(如v1) 在“path”属性下为方法指定的名称。(例如,资产) 在上面的示例中,实际路径将是/api/myapi/v1/asset 现在,问题是我不想要“myapi”层。有两种方法可以做到这一点: 我可以将/*映射到EndpointsServlet,并将myapi更改为api。然而,我真的不想这样做,因为

在Google云端点中,资源的路径由以下公式给出:

  • 在web.xml中为EndpointsServlet配置的路径(例如api)
  • @API注释中“名称”属性下给出的名称(例如myapi)
  • 版本(如v1)
  • 在“path”属性下为方法指定的名称。(例如,资产)
  • 在上面的示例中,实际路径将是/api/myapi/v1/asset

    现在,问题是我不想要“myapi”层。有两种方法可以做到这一点:

  • 我可以将/*映射到EndpointsServlet,并将myapi更改为api。然而,我真的不想这样做,因为应用程序中还有其他路径(例如,静态文件)我没有用于API,最恼人的是404页面停止工作
  • 我尝试使用空字符串作为@API名称,但框架不允许这样做(自动将其设置为myapi)
  • 是否有办法执行#2并阻止框架在路径前添加“api”部分(并保留版本)?

    根据,您需要在@api注释中指定名称,否则将按照您的说明使用myapi

    通过将web.xml中的url模式设置为
    /*
    ,可以从端点删除路径的
    /\u ah/api
    部分。然后在openapi.json中将basePath设置为
    /
    。最终路径将从API注释开始。在这种情况下,
    /myapi/v1/asset
    。您可以将myapi设置为您想要的任何值


    我知道这是你的#1,但这是我找到的最接近的方式

    我认为,如果所有的
    @ApiMethod
    路径都以
    /
    开头,那么它将满足您的需要。