移除 API 管理

如果您在 Google Cloud 上为您的应用添加了 API 管理,但后来决定不再需要 API 管理功能,则可以配置 Cloud Endpoints Frameworks 以停止管理 API。

移除 API 管理不会导致停止提供 API。如果您想停止提供 API,您可以在 Google Cloud 控制台中的 App Engine 设置页面上停用该应用,也可以删除 Google Cloud 项目。如需了解详情,请参阅停用应用和关闭项目

要移除 API 管理,请执行以下操作:

  1. 备份您的 API 项目的 web.xmlappengine-web.xml 文件。

  2. 在 API 项目的 web.xml 文件中,移除以下内容:

    • endpoints-api-configuration 过滤条件。
    • endpoints-api-controller 过滤条件。
    • endpoints-api-configuration 过滤条件映射。
    • endpoints-api-controller 过滤条件映射。

    删除过滤条件和过滤条件映射后,您的 web.xml 应类似于如下所示:

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
        <!-- 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.skeleton.MyApi</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-app>
  3. appengine-web.xml 文件中,移除用于定义 ENDPOINTS_SERVICE_NAME 环境变量的一行。如果 ENDPOINTS_SERVICE_NAME 是您定义的唯一环境变量,请移除整个 env-variables 部分。

  4. 清理项目,然后构建 API:

    Maven

        mvn clean
        mvn package

    Gradle

        gradle clean
        gradle build
  5. 重新部署应用

    Maven

    mvn appengine:deploy

    Gradle

    gradle appengineDeploy

重新部署应用后,Cloud Endpoints Frameworks 将停止管理您的 API。

验证 API 管理移除

要验证 Endpoints Frameworks 是否不再管理您的 API,请执行以下操作:

  1. 在 Google Cloud 控制台中,依次前往 Endpoints > Services 页面。

    转到“Endpoints 服务”页面

  2. 记下您的 API 中某个方法的请求数量。

  3. 点击该方法的 View logs 链接。

  4. Produced API 日志中,记下最近一条日志条目的日期和时间。

  5. 向您的 API 中的这一方法发送一些请求。

  6. 在 Google Cloud 控制台中,依次前往 Endpoints > Services 页面。

    转到“Endpoints 服务”页面

    该方法的请求计数器未更新。

  7. 点击该方法的 View logs 链接。

    Produced API 日志不包含您发送的请求的日志条目。

移除构建配置中的依赖项

你可以选择删除构建配置中的依赖项,但这不是必须的。

要移除构建配置中的依赖项,请执行以下操作:

  1. 备份您的 pom.xml 文件或 build.gradle 文件。

  2. 移除以下依赖项:

    • endpoints-management-control-appengine
    • endpoints-management-control-appengine-all
    • endpoints-framework-auth
  3. 清理项目,然后构建 API:

    Maven

        mvn clean
        mvn package

    Gradle

        gradle clean
        gradle build
  4. 重新部署应用

    Maven

    mvn appengine:deploy

    Gradle

    gradle appengineDeploy

  5. 测试您的 API 以确保它按预期工作。

删除托管式服务

Endpoints Frameworks 使用 Google Service Management 来管理您的 API。当您使用 gcloud endpoints services deploy 命令部署 OpenAPI 文档时,该命令使用 Service Management 为您的 API 创建托管式服务。如果不需要 Endpoints > 服务页面上的数据和日志查看器页面的 Produced API 日志中的数据,您可以删除 API 的代管式服务,从而从 Google Cloud 控制台中移除该数据。

要删除托管式服务,请执行以下操作:

  1. 确保 gcloud CLI (gcloud) 有权访问您在 Google Cloud 上的数据和服务:

    gcloud auth login
    
  2. 输入以下命令,以显示 Google Cloud 项目的 ID:

    gcloud projects list
    
  3. 使用上一步中相应的项目 ID,将默认 Google Cloud 项目设置为您的应用所在的项目:

    gcloud config set project [YOUR_PROJECT_ID]
    
  4. 获取 Google Cloud 项目中所有托管式服务的名称:

    gcloud endpoints services list
    
  5. 从 Service Management 中删除服务:将 SERVICE_NAME 替换为您要移除的服务的名称。

    gcloud endpoints services delete SERVICE_NAME
    

    运行 gcloud endpoints services delete 不会立即删除托管式服务。Service Management 会将该托管式服务停用 30 天,以便您在需要时对其进行恢复。30 天后,Service Management 将永久删除该托管式服务。

后续步骤