移除 API 管理

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

移除 API 管理不会导致停止提供 API。如果您想停止提供 API,您可以在 Google Cloud Console 的 App Engine 设置页面上禁用该应用或者删除 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. 在 Cloud Console 中,转到 Endpoints > 服务页面。

    转到“Endpoints 服务”页面

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

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

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

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

  6. 在 Cloud Console 中,转到 Endpoints > 服务页面。

    转到“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 的托管式服务,从而从 Cloud Console 中移除该数据。

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

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

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

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

    gcloud config set project [YOUR_PROJECT_ID]
    
  4. 获取 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 将永久删除该托管式服务。

后续步骤