发布您的 API

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

如下文所述,将 API 发布到您的门户,以供应用开发者使用。

API 发布概览

向门户发布 API 的过程分为两个步骤:

  1. 选择要发布到门户的 API 产品。
  2. 根据 OpenAPI 文档或 GraphQL 架构呈现 API 参考文档,以便应用开发者了解您的 API。(如需详细了解快照,请参阅什么是快照?

发布到门户的内容有哪些?

发布 API 时,系统会自动对您的门户进行以下更新:

  • API 参考文档。显示的界面取决于您是使用 OpenAPI 文档还是 GraphQL 架构发布 API。请参阅:
  • 将 API 参考页面的链接添加到 API 页面

    API 页面(包含在 示例门户中)列出了发布到您的门户的所有 API 的列表(按字母顺序列出),并随附了指向相应 API 参考文档的链接。(可选)您可以自定义以下内容:

    • 为每个 API 卡片显示的图片
    • 用于标记 API 的类别,使开发者可以在 API 页面上发现相关的 API

    实时门户中的 API 页面,显示了两个类别和图像的使用情形

SmartDocs (OpenAPI)

使用 OpenAPI 文档发布 API 时,SmartDocs API 参考文档会添加到您的门户。

开发者可以查看您的 SmartDocs API 参考文档,并使用试用此 API 面板发出 API 请求并查看输出。根据您的 OpenAPI 文档中定义的安全方法,试用此 API 功能可用于不安全的端点或使用基本身份验证、API 密钥身份验证或 OAuth 身份验证的安全端点。对于 OAuth,支持以下流程:授权代码、密码和客户端凭据。

API 参考文档页面,其中包含的宣传信息显示如何为 API 调用授权、移除“试用此 API”面板、下载相关规范并执行 API。

点击 全屏以展开试用此 API 面板。在展开的面板中,您可以查看各种格式(如 HTTP、Python、Node.js 等)的 curl 调用和代码示例,如以下图所示。

展开的“试用此 API”面板

GraphQL 资源管理器

使用 GraphQL 架构发布 API 时,系统会将 GraphQL 资源管理器添加到您的门户中。GraphQL 资源管理器是一个交互式平台,用于对 API 运行查询。该资源管理器基于 GraphiQL,后者是由 GraphQL Foundation 开发的 GraphQL IDE 的一个参考实现。

开发者可以使用 GraphQL 资源管理器来浏览基于架构的交互式文档、构建和运行查询、查看查询结果以及下载架构。如果要保护对 API 的访问,开发者可以在请求标头窗格中传递授权标头。

如需详细了解 GraphQL,请参阅 graphql.org

门户中的 GraphQL 资源管理器

什么是快照?

每个 OpenAPI 或 GraphQL 文档都用作 API 整个生命周期内的可靠来源。API 生命周期的各个阶段(从开发、发布到监控)都使用相同的文档。修改文档时,您需要了解所做的更改在 API 的其他生命周期阶段对 API 产生的影响,如修改文档时会发生什么情况?中所述。

发布 API 时,您需要截取 OpenAPI 或 GraphQL 文档的快照来呈现 API 参考文档。该快照表示特定版本的文档。如果修改了文档,可能需要再次截取文档的快照,以反映 API 参考文档中的最新更改。

回调网址简介

如果您的应用需要回调网址,例如,在使用 OAuth 2.0 授权代码授权类型(通常称为“三足式 OAuth”)时,您可以要求开发者在注册应用时指定回调网址。回调网址通常指定要代表客户端应用接收授权代码的应用的网址。如需了解详情,请参阅实现授权代码授权类型

向门户添加 API 时,您可以配置在应用注册期间是否需要回调网址。您可以随时修改此设置,如管理 API 的回调网址中所述。

注册应用时,开发者必须为所有需要回调网址的 API 输入回调网址,如注册应用中所述。

配置 API 代理以支持“试用此 API”

在使用 OpenAPI 文档发布 API 之前,您需要配置 API 代理,以支持在 SmartDocs API 参考文档中的试用此 API 面板上发出请求,如下所示:

  • 向您的 API 代理添加 CORS 支持以强制执行客户端跨源请求

    CORS 是一种标准机制,允许在网页中执行的 JavaScript XMLHttpRequest (XHR) 调用与来自非源网域的资源进行交互。CORS 是通常针对所有浏览器强制执行的同源政策实现的解决方案。

  • 如果您使用的是基本身份验证或 OAuth2,请更新 API 代理配置

下表汇总了 API 代理配置要求,以根据身份验证访问权限支持 SmartDocs API 参考文档中的试用此 API 面板。

身份验证访问权限 政策配置要求
无或 API 密钥 向您的 API 代理添加 CORS 支持。为方便起见,请使用 GitHub 中提供的 示例 CORS 解决方案,或按照 向 API 代理添加 CORS 支持中所述的步骤执行操作。
基本身份验证 请执行以下步骤:
  1. 向您的 API 代理添加 CORS 支持。为方便起见,请使用 GitHub 中提供的 示例 CORS 解决方案,或按照 向 API 代理添加 CORS 支持中所述的步骤执行操作。
  2. 在 Add CORS AssignMessage 政策中,确保 Access-Control-Allow-Headers 标头包含 authorization 属性。例如:
    <Header name="Access-Control-Allow-Headers">
      origin, x-requested-with, accept, content-type, authorization
    </Header>
OAuth2
  1. 向您的 API 代理添加 CORS 支持。为方便起见,请使用 GitHub 中提供的 示例 CORS 解决方案,或按照 向 API 代理添加 CORS 支持中所述的步骤执行操作。
  2. 在 Add CORS AssignMessage 政策中,确保 Access-Control-Allow-Headers 标头包含 authorization 属性。例如:
    <Header name="Access-Control-Allow-Headers">
      origin, x-requested-with, accept, content-type, authorization
    </Header>
  3. 更正 OAuth2 政策中的 不符合 RFC 规范的行为。为方便起见,请使用 GitHub 中提供的 示例 OAuth2 解决方案或执行以下步骤:
    • 确保将 OAuth2 政策中的 <GrantType> 元素设置为 request.formparam.grant_type(表单参数)。如需了解详情,请参阅 <GrantType>
    • 确保将 OAuth2 政策中的 token_type 设置为 Bearer,而不是默认值 BearerToken

管理 API

按照以下部分中的说明管理您的 API。

探索 API

使用界面或 curl 命令查看门户中的 API。

界面

如需查看 API 目录,请执行以下操作:

  1. 选择发布 > 门户,然后选择您的门户。
  2. 在门户首页上点击 API 目录。 或者,您也可以在顶部导航栏的门户下拉菜单中选择 API 目录

API 目录中的 API 标签页会显示已添加到您的门户的 API 列表。

API 标签页,其中显示与 API 有关的信息,包括名称、说明、可见性、类别、相关规范和修改时间

如上图所示,您可以通过 API 标签页执行以下操作:

curl

如需列出 API,请执行以下操作:

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs" \
    -H "Authorization: Bearer ACCESS_TOKEN"

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • ACCESS_TOKEN,其中包含用于访问 Apigee Edge API 的身份验证令牌。如需详细了解身份验证和令牌,请参阅对 Edge API 访问进行身份验证

如需了解如何在响应载荷中使用分页,请参阅分页说明

响应载荷:

{
  "status": "success",
  "message": "one page of apidocs returned",
  "data": [
    {
      "id": 622759,
      "siteId": "my-org-myportal",
      "title": "Test",
      "description": "",
      "published": false,
      "visibility": false,
      "apiId": "apiproducttest18",
      "apiProductName": "apiproduct_test18",
      "edgeAPIProductName": "apiproduct_test18",
      "specId": null,
      "specContent": null,
      "specTitle": null,
      "snapshotExists": false,
      "snapshotModified": null,
      "modified": 1724144471000,
      "anonAllowed": false,
      "imageUrl": null,
      "snapshotState": null,
      "requireCallbackUrl": false,
      "categoryIds": [],
      "specFormat": null,
      "specModified": null,
      "snapshotOutdated": false,
      "snapshotSourceMissing": false,
      "graphqlSchema": null,
      "graphqlEndpointUrl": null,
      "graphqlSchemaDisplayName": null,
      "grpcFileName": null,
      "grpcZipContent": null
    }
  ],
  "code": null,
  "request_id": "1452867334",
  "error_code": null,
  "next_page_token": ""
}

其中:

  • modified:从纪元算起到上次修改目录项的时间(以毫秒为单位)。例如 1698165480000
  • id:目录项的 ID。例如 399668

分页说明:

  • 页面大小:使用 pageSize 指定要在一个页面中返回的列表项数量。默认值为 25,最大值为 100。如果存在其他页面,系统会使用令牌填充 nextPageToken

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs?pageSize=PAGE_SIZE" \
       -H "Authorization: Bearer ACCESS_TOKEN"
    

    您需要将其中的:

    • PAGE_SIZE 替换为要在一个页面中返回的列表项的数量。例如 10。

    响应载荷:

    {
      "status": "success",
      "message": "one page of apidocs returned",
      "data": [
        {
          "id": 638007,
          "siteId": "tsnow-mint-liztest",
          "title": "Testing",
          "description": "",
          "published": false,
          "visibility": false,
          "apiId": "testcatalog",
          "apiProductName": "testcatalog",
          "edgeAPIProductName": "testcatalog",
          "specId": "Petstore",
          "specContent": null,
          "specTitle": null,
          "snapshotExists": true,
          "snapshotModified": 1726508367000,
          "modified": 1728582504000,
          "anonAllowed": false,
          "imageUrl": null,
          "snapshotState": "OK_SUBMITTED",
          "requireCallbackUrl": false,
          "categoryIds": [],
          "specFormat": "YAML",
          "specModified": null,
          "snapshotOutdated": false,
          "snapshotSourceMissing": false,
          "graphqlSchema": null,
          "graphqlEndpointUrl": null,
          "graphqlSchemaDisplayName": null,
          "grpcFileName": null,
          "grpcZipContent": null
        }
      ],
      "code": null,
      "request_id": "1068810934",
      "error_code": null,
      "next_page_token": ""
    }
    

  • 页面令牌:如果有多个页面,请使用 pageToken 检索后续页面:

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN" \
          -H "Authorization: Bearer ACCESS_TOKEN"
    

    您需要将其中的:

    • PAGE_SIZE 替换为要在一个页面中返回的列表项的数量。例如 10。
    • PAGE_TOKEN 替换为 nextPageToken 值。例如 7zcqrin9l6xhi4nbrb9

添加 API

您可以使用界面或 curl 命令向门户添加 API:

界面

如需向您的门户添加 API,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 依次点击 + 添加

    系统会显示将 API 产品添加到目录对话框。

  4. 选择要添加到门户的 API 产品。

  5. 点击下一步。此时将显示 API 详细信息页面。

  6. 在门户中配置 API 参考文档内容及其公开范围:

    字段 说明
    已发布 选择已发布,以将 API 发布到您的门户。 如果您还没准备好发布 API,请清除该复选框。 您可以稍后更改此设置,如在您的门户上发布或取消发布 API 中所述。
    显示标题 更新目录中显示的 API 的标题。 默认情况下,系统会使用 API 产品名称。您可以稍后更改显示标题,如修改显示标题和说明中所述。
    显示说明 更新目录中显示的 API 的说明。默认情况下,系统会使用 API 产品说明。您可以稍后更改显示说明,如修改显示标题和说明中所述。
    要求开发者指定回调网址 如果您希望要求应用开发者指定回调网址,请启用此 API。您可以稍后添加或更新回调网址,如管理 API 的回调网址中所述。
    API 文档

    如需使用 OpenAPI 文档,请执行以下操作:

    1. 选择 OpenAPI 文档 (OpenAPI document)。
    2. 点击选择文档
    3. 执行以下步骤之一:
      • 点击 My Specs(我的规范)标签页,然后从规范商店中选择一个规范。
      • 点击上传文件标签页,然后上传文件。
      • 点击从网址导入标签页,然后从网址导入规范。
    4. 点击选择

    如需使用 GraphQL 架构,请执行以下操作

    1. 选择 GraphQL 架构
    2. 点击选择文档
    3. 导航到 GraphQL 架构,并选择它。
    4. 点击选择

    或者,您也可以按照管理文档的快照中所述,选择无文档,然后在添加 API 后再添加文档。

    API 可见性

    如果您尚未 注册受众群体管理功能的 Beta 版,请选择以下选项之一:

    • 匿名用户:允许所有用户查看 API。
    • 注册用户:仅允许已注册的用户查看 API。

    如果您 已注册受众群体管理功能的 Beta 版,请选择以下选项之一:

    • 公开(对所有人可见):允许所有用户查看 API。
    • 经过身份验证的用户:仅允许已注册的用户查看 API。
    • 选定受众群体:选择您希望能够查看 API 的特定受众群体。

    您可以稍后按照管理门户上的 API 可见性中的说明管理受众群体可见性。

    显示图片 如需在 API 页面上显示 API 卡片的图片,请点击选择图片。在选择图片对话框中,选择一个现有图片、上传新图片或提供外来图片的网址,然后点击选择。预览 API 缩略图,然后点击选择。您可以稍后添加图片,如管理 API 卡片的图片中所述。指定具有外部网址的图片时,图片不会上传到您的资产;此外,在集成式门户中加载图片会受到其可用性的约束,而这可能会受 内容安全政策的阻止或限制。
    类别

    添加将要标记 API 的类别,使应用开发者可在 API 页面上发现相关的 API。如需识别某个类别,请执行以下操作:

    • 从下拉列表中选择类别。
    • 输入新类别的名称,然后按 Enter 键即可添加新类别。 新类别便会添加到“类别”页面,并且在添加或修改其他 API 时可用。

  7. 点击保存

curl

如需向您的门户添加 API,请执行以下操作:

curl -X POST "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
       "title": "TITLE",
       "description": "DESCRIPTION",
       "anonAllowed": ANON_TRUE_OR_FALSE,
       "imageUrl": "IMAGE_URL",
       "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
       "categoryIds": [
         "CATEGORY_ID1",
         "CATEGORY_ID2"
       ],
       "published": PUBLISHED_TRUE_OR_FALSE,
        "apiProductName": "API_PRODUCT"
    }'

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • ACCESS_TOKEN,其中包含用于访问 Apigee Edge API 的身份验证令牌。如需详细了解身份验证和令牌,请参阅对 Edge API 访问进行身份验证
  • TITLE 替换为显示标题。例如 Hello World 2
  • DESCRIPTION 替换为显示说明。例如:Simple hello world example
  • ANON_TRUE_OR_FALSE 替换为 truefalse(默认),其中 true 表示此 API 具有公开可见性,可匿名查看;否则,只有注册用户才能查看。
  • IMAGE_URL 替换为目录项所用外来图片的网址,或门户中存储的图片文件的文件路径,例如 /files/book-tree.jpg。指定外来图片的网址时,图片不会上传到您的资产;此外,在集成式门户中加载图片会受到其可用性的约束,而这可能会受内容安全政策的阻止或限制。
  • CALLBACK_TRUE_OR_FALSE 替换为 truefalse(默认),其中 true 要求门户用户在管理应用时输入网址。
  • CATEGORY_ID 替换为类别的 ID。例如bf6505eb-2a0f-47af-a00a-ded40ac72960。以英文逗号分隔多个类别 ID。使用 list API categories 命令获取类别 ID。
  • PUBLISHED_TRUE_OR_FALSE 替换为 truefalse(默认),其中 true 表示 API 可公开访问。发布后,您可以向所有用户、经过身份验证的用户或特定用户授予访问权限
  • API_PRODUCT 替换为 API 产品的名称。例如 Hello World 2

响应载荷:

{
  "status": "success",
  "message": "API created",
  "data": {
    "id": 662423,
    "siteId": "my-org-myportal",
    "title": "My Test Catalog 4",
    "description": "",
    "published": false,
    "visibility": false,
    "apiId": "uxb9wjua",
    "apiProductName": "uXB9wJUa",
    "edgeAPIProductName": "uXB9wJUa",
    "specId": null,
    "specContent": null,
    "specTitle": null,
    "snapshotExists": false,
    "snapshotModified": null,
    "modified": 1729635493000,
    "anonAllowed": false,
    "imageUrl": null,
    "snapshotState": null,
    "requireCallbackUrl": false,
    "categoryIds": [],
    "specFormat": null,
    "specModified": null,
    "snapshotOutdated": null,
    "snapshotSourceMissing": false,
    "graphqlSchema": null,
    "graphqlEndpointUrl": null,
    "graphqlSchemaDisplayName": null,
    "grpcFileName": null,
    "grpcZipContent": null
  },
  "code": null,
  "request_id": "893346193",
  "error_code": null
}

其中:

  • modified:从纪元算起到上次修改目录项的时间(以毫秒为单位)。例如 1698165480000
  • id:目录项的 ID。例如 399668

修改 API

添加 API 后,请使用界面或 API 调用进行修改。

本部分举例详细介绍了在门户中修改现有 API 所采取的步骤。

请参阅后续部分,了解具体的修改设置。

界面

如需修改 API,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 点击“修改”图标修改
  5. API 详细信息下,进行任何修改。请参阅添加 API 中的选项说明。
  6. 点击保存

curl

添加 API 后,请使用 update 调用进行修改。

本示例逐步引导您将门户中 API 的已发布状态从 true 更改为 false。如有必要,您可以在一个 API 调用中更改多个设置。

  1. 如需查找唯一标识每个 API 的生成 id,请按照探索 API 中所述的方法获取门户中的 API 列表。
  2. 返回特定 API 的当前值

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
    -H "Authorization: Bearer ACCESS_TOKEN"
    

    替换以下内容:

    • ORG_NAME 替换为组织的名称。例如 my-org
    • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
    • API_DOC 替换为文档的生成 id。例如 399668。使用 list API docs 命令查找此值。
    • ACCESS_TOKEN,其中包含用于访问 Apigee Edge API 的身份验证令牌。如需详细了解身份验证和令牌,请参阅对 Edge API 访问进行身份验证

    响应载荷:

    {
      "status": "success",
      "message": "apidoc returned",
      "data": {
        "id": 662423,
        "siteId": "my-org-myportal",
        "title": "My Test Catalog 4",
        "description": "",
        "published": false,
        "visibility": false,
        "apiId": "uxb9wjua",
        "apiProductName": "uXB9wJUa",
        "edgeAPIProductName": "uXB9wJUa",
        "specId": null,
        "specContent": null,
        "specTitle": null,
        "snapshotExists": false,
        "snapshotModified": null,
        "modified": 1729635493000,
        "anonAllowed": false,
        "imageUrl": null,
        "snapshotState": null,
        "requireCallbackUrl": false,
        "categoryIds": [],
        "specFormat": null,
        "specModified": null,
        "snapshotOutdated": false,
        "snapshotSourceMissing": false,
        "graphqlSchema": null,
        "graphqlEndpointUrl": null,
        "graphqlSchemaDisplayName": null,
        "grpcFileName": null,
        "grpcZipContent": null
      },
      "code": null,
      "request_id": "601210268",
      "error_code": null
    }
    

  1. 将要保留的可变值包含在 update 调用中,并修改要更改的值。如果您省略了一行,则系统会使用默认设置。在此示例中,将“已发布”设置从 false 更改为 true

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
     -H "Authorization: Bearer ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
        "title": "TITLE",
        "anonAllowed": true,
        "published": true
     }'
    

    替换以下内容:

    • TITLE 替换为显示标题。例如 Hello World 2

    响应载荷:

    {
      "status": "success",
      "message": "ApiDoc updated",
      "data": {
        "id": 662423,
        "siteId": "my-org-myportal",
        "title": "My Test Catalog 4",
        "description": "",
        "published": true,
        "visibility": true,
        "apiId": "uxb9wjua",
        "apiProductName": "uXB9wJUa",
        "edgeAPIProductName": "uXB9wJUa",
        "specId": null,
        "specContent": null,
        "specTitle": null,
        "snapshotExists": false,
        "snapshotModified": null,
        "modified": 1729989250000,
        "anonAllowed": true,
        "imageUrl": null,
        "snapshotState": null,
        "requireCallbackUrl": false,
        "categoryIds": [],
        "specFormat": null,
        "specModified": null,
        "snapshotOutdated": null,
        "snapshotSourceMissing": false,
        "graphqlSchema": null,
        "graphqlEndpointUrl": null,
        "graphqlSchemaDisplayName": null,
        "grpcFileName": null,
        "grpcZipContent": null
      },
      "code": null,
      "request_id": "738172002",
      "error_code": null
    }
    

管理文档的快照

发布 API 后,您可以随时截取 OpenAPI 或 GraphQL 文档的新快照,以更新在门户上发布的 API 参考文档。

如需管理文档的快照,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 检查快照状态。如果快照已过期,系统会显示以下消息:图标和表示快照已过期的消息
  5. 点击 “修改”图标
  6. 执行以下任务之一:
    • 如需刷新已过期的 OpenAPI 文档的快照,请点击刷新快照
    • 如需更改用于生成 API 文档的文档,请在“API 文档”下方点击选择文档,然后选择新文档。
  7. 点击保存

在您的门户上发布或取消发布 API

发布是将 API 提供给应用开发者使用的过程。

使用界面或 curl 命令在您的门户上发布或取消发布 API。

界面

如需在您的门户上发布或取消发布 API,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 点击 “修改”图标 修改
  5. API 详细信息下,选择或取消选择已发布(在目录中列出),以分别在您的门户上发布或取消发布 API。
  6. 点击保存

curl

在更新调用中添加以下其中一项:

"published": true,    # API is published to your portal
"published": false,   # API is not published in your portal

如需修改 API,请执行以下操作:

  1. 返回当前值

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs" \
    -H "Authorization: Bearer ACCESS_TOKEN"
  2. 使用 update 调用修改 API。添加要保留的可变值并修改要更改的值。如果您省略可变设置,系统会将其替换为默认值。

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/  ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
     -H "Authorization: Bearer ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
        "title": "TITLE",
        "description": "DESCRIPTION",
        "anonAllowed": ANON_TRUE_OR_FALSE,
        "imageUrl": IMAGE_URL,
        "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
        "categoryIds": [
          "CATEGORY_ID1",
         "CATEGORY_ID2"
        ],
        "published": PUBLISHED_TRUE_OR_FALSE
    }

如需查看步骤、变量和返回载荷的详细示例,请参阅管理文档的版本

管理门户中 API 的公开范围

通过为以下各项授予访问权限,管理门户中 API 的公开范围:

您可以使用界面或 curl 命令来管理门户中 API 的公开范围:

界面

如需管理门户中 API 的公开范围,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 点击 “修改”图标 修改
  5. 选择公开范围设置。如果您已注册受众群体功能的 Beta 版,请选择以下选项之一:

    • 公开(对所有人可见):允许所有用户查看页面。
    • 经过身份验证的用户:只允许注册用户查看页面。
    • 选定的受众群体:选择您希望能够查看相应网页的特定受众群体。请参阅管理门户的受众群体
    否则,请选择以下选项之一:
    • 匿名用户:允许所有用户查看页面。
    • 已注册的用户:只允许注册用户查看页面。

  6. 点击提交

curl

如果您已注册受众群体管理功能的 Beta 版,请使用界面管理受众群体。

如果您尚未注册受众群体管理功能,请使用 anonAllowed 管理公开范围。

update 调用中添加以下其中一项:

  # When not enrolled in the beta release of the audience management feature:

  "anonAllowed": true,      # Anonymous users can see the API
  "anonAllowed": false,     # Only registered users can see the API

如需修改 API,请执行以下操作:

  1. 返回当前值

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. 使用 update 调用修改 API。添加要保留的可变值并修改要更改的值。如果您省略可变设置,则使用默认值。

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

如需查看步骤、变量和返回载荷的详细示例,请参阅修改 API

管理 API 的回调网址

管理 API 的回调网址。请参阅回调网址简介

您可以使用界面或 curl 命令来管理 API 的回调网址:

界面

如需管理 API 的回调网址,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 点击 “修改”图标 修改
  5. API 详细信息下,选中或清除要求开发者指定回调网址复选框。
  6. 点击保存

curl

update 调用中添加以下其中一项:

  "requireCallbackUrl": true,    # Portal user is required to input a URL
  "requireCallbackUrl": false,   # Portal user is not required to input a URL

如需修改 API,请执行以下操作:

  1. 返回当前值

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. 使用 update 调用修改 API。添加要保留的可变值并修改要更改的值。如果您省略可变设置,则使用默认值。

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

如需查看步骤、变量和返回载荷的详细示例,请参阅修改 API

管理 API 卡片的图片

通过添加图片或更改当前图片,管理 API 页面上的 API 卡片中显示的图片。

您可以使用界面或 curl 命令管理 API 卡片的图片:

界面

如需管理 API 卡片的图片,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 点击 “修改”图标 修改
  5. API 详细信息下:

    • 点击选择图片以指定或上传图片(如果您未选择图片)。
    • 点击更改图片以指定或上传其他图片。
    • 点击图片中的 x 可将其移除。

    指定图片时,请指定具有目录项所用外部网址的图片,或存储在门户中的图片文件的路径,例如 /files/book-tree.jpg。指定外来图片的网址时,图片不会上传到您的资产;此外,在集成式门户中加载图片会受到其可用性的约束,而这可能会受内容安全政策的阻止或限制。

  6. 点击保存

curl

update 调用中添加以下内容:

  # Omit line for no image file

  "imageUrl": "IMAGE_URL"    # URL of the external image or name of the image file

如需修改 API,请执行以下操作:

  1. 返回当前值

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. 使用 update 调用修改 API。添加要保留的可变值并修改要更改的值。如果您省略可变设置,则使用默认值。

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

如需查看步骤、变量和返回载荷的详细示例,请参阅修改 API

使用类别标记 API

使用类别可帮助应用开发者发现相关 API。另请参阅管理类别

您可以通过以下方式之一使用类别标记 API:

  • 如下所述,在修改 API 时管理要标记其 API 的类别。
  • 修改类别时管理针对类别标记的 API。

您可以使用界面或 curl 命令,通过类别标记 API:

界面

要在修改 API 时针对类别标记 API,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 点击 “修改”图标 修改
  5. 点击类别字段并执行以下某个步骤:
    • 从下拉列表中选择类别。
    • 输入新类别的名称,然后按 Enter 键即可添加新类别。新类别便会添加到“类别”页面,并且在添加或修改其他 API 时可用。
  6. 重复以上操作即可针对更多类别标记 API。
  7. 点击保存

curl

update 调用中添加以下内容:

  # Omit line for no categories

  "categoryIds": [
      "CATEGORY_ID1",      # A category ID number
      "CATEGORY_ID2"       # A category ID number
    ],

使用 list categories 命令获取类别 ID 编号。

如需修改 API,请执行以下操作:

  1. 返回当前值

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. 使用 update 调用修改 API。添加要保留的可变值并修改要更改的值。如果您省略可变设置,则使用默认值。

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

如需查看步骤、变量和返回载荷的详细示例,请参阅修改 API

修改显示标题和说明

您可以使用界面或 curl 命令修改显示标题和说明:

界面

要修改显示标题和说明,请执行以下操作:

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 点击 “修改”图标 修改
  5. 根据需要修改显示标题显示说明字段。
  6. 点击保存

curl

update 调用中添加以下内容:

  "title": "TITLE",    # Display title
  "description": "DESCRIPTION",  # Display description

如需修改 API,请执行以下操作:

  1. 返回当前值

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. 使用 update 调用修改 API。添加要保留的可变值并修改要更改的值。如果您省略可变设置,则使用默认值。

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

如需查看步骤、变量和返回载荷的详细示例,请参阅修改 API

从门户中移除 API

您可以使用界面或 curl 命令从门户中移除 API:

界面

如需从您的门户中移除 API,请执行以下操作:

  1. 访问 API 目录
  2. 选择 API(如果尚未选择)。
  3. 将光标置于列表中的 API 上以显示操作菜单。
  4. 点击 “删除”图标 删除

curl

如需从门户中移除 API,请执行以下操作:

curl -X DELETE "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
    -H "Authorization: Bearer ACCESS_TOKEN"

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • API_DOC 替换为文档的生成 id。例如 399668。使用 list API docs 命令查找此值。
  • ACCESS_TOKEN,其中包含用于访问 Apigee Edge API 的身份验证令牌。如需详细了解身份验证和令牌,请参阅对 Edge API 访问进行身份验证

响应载荷:

{
  "status": "success",
  "message": "Apidoc deleted",
  "data": {
  },
  "code": null,
  "request_id": "1790036484",
  "error_code": null
}

管理 API 文档

以下部分介绍了如何更新、下载或移除 API 文档。

更新 API 文档

如需上传其他版本的 API 文档,请执行以下操作:

界面

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 检查快照状态。如果快照已过期,系统会显示以下消息:图标和表示快照已过期的消息
  5. 点击 修改
  6. 执行以下任务之一:
    • 如需刷新已过期的 OpenAPI 文档的快照,请点击刷新快照
    • 如需更改用于生成 API 文档的文档,请在“API 文档”下方点击选择文档,然后选择新文档。
  7. API 文档窗格中,选择以下任一选项:
    • OpenAPI 文档
    • GraphQL 架构
  8. 点击选择文档,然后选择文档的最新版本。
  9. 对于 GraphQL,请指定端点网址
  10. 点击保存

系统会根据该文档呈现 API 参考文档,并将其添加到“API 参考”页面。快照状态会更新为当前状态:

图标和消息表示快照是最新快照

curl

如需更新 OpenAPI 或 GraphQL 文档内容,请执行以下操作:

OpenAPI

curl -X PATCH "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC/documentation" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"oasDocumentation": {
           "spec":{ "displayName":"DISPLAY_NAME",
                    "contents":"CONTENTS"}
            }
        }'

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • API_DOC 替换为文档的生成 id。例如 399668。使用 list API docs 命令查找此值。
  • DISPLAY_NAME 替换为 API 文档的显示名称。例如 Hello World 2
  • CONTENTS 替换为 API 文档内容的 base64 编码字符串。大多数开发环境都包含一个 base64 转换实用程序,或有许多在线转换工具。

响应载荷:

{
 "status":"success",
 "message":"Api documentation updated",
 "requestId":"645138278"
 "data": {
   "oasDocumentation": {
     "spec": {
        "displayName": "Hello World 2"
      },
     "Format": "YAML"
   }
 }
}

GraphQL

curl -X PATCH "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC/documentation" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"graphqlDocumentation": {
         "schema":{"displayName":"DISPLAY_NAME",
         "contents":"CONTENTS"},
         "endpointUri": "ENDPOINT_URI"
          }
      }'

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • API_DOC 替换为文档的生成 id。例如 399668。使用 list API docs 命令查找此值。
  • DISPLAY_NAME 替换为 API 文档的显示名称。例如 Hello World 2
  • ENDPOINT_URI 替换为您的端点 URI 的域名。例如 https://demo.google.com/graphql
  • CONTENTS 替换为 API 文档内容的 base64 编码字符串。大多数开发环境都包含一个 base64 转换实用程序,或有许多在线转换工具。

响应载荷:

{
"status": "success",
"message": "ApiDocDocumentation updated",
"data": {
  "oasDocumentation": null,
  "graphqlDocumentation": {
    "schema": {
      "displayName": "schema.docs.graphql",
      "contents": ""
    },
    "endpointUri": "https://demo.google.com/graphql"
  }
},
"code": null,
"request_id": "640336173",
"error_code": null
}

系统会根据该文档呈现 API 参考文档,并将其添加到实时门户的 API 页面中。

下载 API 文档

如需下载 API 文档,请执行以下操作:

界面

curl

如需使用 get documentation 下载 API 文档,请执行以下操作:

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC/documentation" \
    -H "Authorization: Bearer ACCESS_TOKEN"

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • API_DOC 替换为文档的生成 id。例如 399668。使用 list API docs 命令查找此值。

    响应载荷:

{
  "status": "success",
  "message": "ApiDocDocumentation returned",
  "data": {
    "oasDocumentation": {
      "spec": {
        "displayName": "mock",
        "contents": "b3BlbmFwaTogMy4wLjAKaW5mbzoKICBkZXNjcmlw ..."
      },
      "format": "YAML"
    },
    "graphqlDocumentation": null
  },
  "code": null,
  "request_id": "269996898",
  "error_code": null
}

其中:

contents:API 文档内容的 base64 编码字符串。

移除 API 文档

如需移除 API 文档,请执行以下操作:

界面

  1. 访问 API 目录
  2. 点击 API 标签页(如果尚未选择)。
  3. 点击要修改的 API 对应的行。
  4. 点击 修改
  5. API 文档窗格中,选择无文档
  6. 点击保存

curl

如需清除现有内容,请使用 update API

curl -X PATCH "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC/documentation" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{}'

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • API_DOC 替换为文档的生成 id。例如 399668。使用 list API docs 命令查找此值。

响应载荷:

{
  "status": "success",
  "message": "ApiDocDocumentation updated",
  "data": {
    "oasDocumentation": null,
    "graphqlDocumentation": null
  },
  "code": null,
  "request_id": "304329676",
  "error_code": null
}

管理用于发现相关 API 的类别

使用类别标记 API,使应用开发者可在实时门户的 API 页面上发现相关 API。添加和管理类别,如以下部分所述。

浏览类别

使用界面或 curl 命令查看门户中的 API。

界面

如需查看“类别”页面,请执行以下操作:

  1. 选择发布 > 门户,然后选择您的门户。
  2. 在门户着陆页上点击 API 目录 (API catalog)。

    或者,您也可以在顶部导航栏的门户下拉菜单中选择 API 目录

  3. 点击类别标签页。

API 目录中的类别标签页会显示已为您的门户定义的类别列表。

显示类别名称以及已分配的 API 的名称和总数的类别标签页

如上图所示,您可以通过“API”页面执行以下操作:

curl

如需列出类别,请执行以下操作:

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apicategories" \
    -H "Authorization: Bearer ACCESS_TOKEN"

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • ACCESS_TOKEN,其中包含用于访问 Apigee Edge API 的身份验证令牌。如需详细了解身份验证和令牌,请参阅对 Edge API 访问进行身份验证

响应载荷:

{
  "status": "success",
  "message": "all ApiCategory items returned",
  "data": [
    {
      "id": "e0518597-ece2-4d7d-ba7c-d1793df0f8db",
      "siteId": "my-org-myportal",
      "name": "My Category"
    },
    {
      "id": "61c1014c-89c9-40e6-be3c-69cca3505620",
      "siteId": "my-org-myportal",
      "name": "test2"
    }
  ],
  "code": null,
  "request_id": "1263510680",
  "error_code": null
}

其中:

  • id:类别项的 ID。例如:61c1014c-89c9-40e6-be3c-69cca3505620

添加类别

您可以通过以下任一方式添加类别:

新类别便会添加到类别页面,并且在添加或修改其他 API 时可用。

使用界面或 curl 命令添加类别:

界面

要手动添加类别,请执行以下操作:

  1. 访问“类别”页面
  2. 依次点击 + 添加
  3. 输入新类别的名称。
  4. (可选)选择一个或多个要针对类别进行标记的 API。
  5. 点击创建

curl

如需添加类别,请执行以下操作:

curl -X POST "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apicategories" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"name": "CATEGORY_NAME" }'

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • ACCESS_TOKEN,其中包含用于访问 Apigee Edge API 的身份验证令牌。如需详细了解身份验证和令牌,请参阅对 Edge API 访问进行身份验证
  • CATEGORY_NAME 替换为类别名称。例如:demo-backend

响应载荷:

{
  "status": "success",
  "message": "API category created",
  "data": {
    "id": "61de810e-b48b-4cc1-8f22-959038aadcce",
    "siteId": "my-org-myportal",
    "name": "demo-backend"
  },
  "code": null,
  "request_id": "363146927",
  "error_code": null
}

修改类别

使用界面或 curl 命令修改类别:

界面

如需修改类别,请执行以下操作:

  1. 访问“类别”页面
  2. 点击 修改
  3. 修改类别的名称。
  4. 添加或移除 API 标记。
  5. 点击保存

curl

如需修改类别,请执行以下操作:

curl -X PATCH "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apicategories/CATEGORY_ID"  \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"name": "CATEGORY_NAME" }'

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • CATEGORY_ID 替换为类别的 ID。例如bf6505eb-2a0f-47af-a00a-ded40ac72960。以英文逗号分隔多个类别 ID。使用 list API categories 命令获取类别 ID。
  • ACCESS_TOKEN,其中包含用于访问 Apigee Edge API 的身份验证令牌。如需详细了解身份验证和令牌,请参阅对 Edge API 访问进行身份验证
  • CATEGORY_NAME 替换为类别名称。例如:demo-backend

响应载荷:

{
  "status": "success",
  "message": "ApiCategory updated",
  "data": {
    "id": "61de810e-b48b-4cc1-8f22-959038aadcce",
    "siteId": "my-org-myportal",
    "name": "demo-backend-test"
  },
  "code": null,
  "request_id": "1976875617",
  "error_code": null
}

删除类别

如果删除类别,则该类别的所有 API 标记也将被删除。

使用界面或 curl 命令删除类别:

界面

要删除类别,请执行以下操作:

  1. 访问“类别”页面
  2. 将光标置于您要修改的类别上方以显示操作菜单。
  3. 点击 删除
  4. 点击删除进行确认。

curl

如需删除类别,请执行以下操作:

curl -X DELETE "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apicategories/CATEGORY_ID" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json"

替换以下内容:

  • ORG_NAME 替换为组织的名称。例如 my-org
  • SITE_ID 替换为门户的名称,格式为 ORG_NAME-PORTAL_NAME,其中 ORG_NAME 是组织的名称,PORTAL_NAME 是门户名称,该名称已全部转换为小写字母,并移除了空格和短划线。例如 my-org-myportal
  • CATEGORY_ID 替换为类别的 ID。例如 bf6505eb-2a0f-47af-a00a-ded40ac72960。使用 list API categories 命令获取类别 ID。
  • ACCESS_TOKEN,其中包含用于访问 Apigee Edge API 的身份验证令牌。如需详细了解身份验证和令牌,请参阅对 Edge API 访问进行身份验证

响应载荷:

{
  "status": "success",
  "message": "ApiCategory deleted",
  "data": {
  },
  "code": null,
  "request_id": "2032819627",
  "error_code": null
}

排查已发布的 API 的问题

以下部分提供了相关信息来帮助您排查已发布的 API 中存在的特定错误。

错误:使用“试用此 API”时返回“未能获取”错误

使用试用此 API 时,如果系统返回 TypeError: Failed to fetch 错误,请考虑以下可能的原因和解决方法:

  • 对于混合内容错误,错误可能是由 已知的 Swagger 界面问题引起。一种可能的解决方法是确保在 OpenAPI 文档的 schemes 定义中在 HTTP 前面指定 HTTPS。例如:

    schemes:
       - https
       - http
    
  • 对于跨源资源共享 (CORS) 限制错误,请确保您的 API 代理支持 CORS。CORS 是一种支持客户端跨源请求的标准机制。请参阅 配置 API 代理以支持“试用此 API”

错误:“Access-Control-Allow-Origin”标头包含多个“'*, *”值,但仅允许一个值

使用试用此 API 时,如果 Access-Control-Allow-Origin 标头已存在,您可能会收到以下错误消息:

The Access-Control-Allow-Origin header contains multiple values '*, *', but only one is allowed.

如需更正此错误,请修改 AssignMessage 政策以使用 <Set> 来设置 CORS 标头,而不是 <Add>,如下面的代码段所示。如需了解详情,请参阅 CORS 错误:标头包含多个“'*, *”值,但仅允许一个值

<AssignMessage async="false" continueOnError="false" enabled="true" name="add-cors">
    <DisplayName>Add CORS</DisplayName>
    <FaultRules/>
    <Properties/>
    <Set>
        <Headers>
            <Header name="Access-Control-Allow-Origin">{request.header.origin}</Header>
            <Header name="Access-Control-Allow-Headers">origin, x-requested-with, accept, content-type, authorization</Header>
            <Header name="Access-Control-Max-Age">3628800</Header>
            <Header name="Access-Control-Allow-Methods">GET, PUT, POST, DELETE</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>

错误:不允许请求标头字段

使用试用此 API 时,如果您收到 Request header field not allowed 错误(类似于以下示例),则可能需要更新 CORS 政策支持的标头。例如:

Access to XMLHttpRequest ... has been blocked by CORS policy: Request header field
content-type is not allowed by Access-Control-Allow-Headers in preflight response

在此示例中,您需要将 content-type 标头添加到 CORS AssignMessage 政策中的 Access-Control-Allow-Headers 部分,如 将 Add CORS 政策附加到新的 API 代理中所述。

错误:使用 OAuth2 调用 API 代理时访问遭拒

Apigee 的 OAuthV2 政策会返回包含某些不符合 RFC 规范的属性的令牌响应。例如,该政策将返回值为 BearerToken 的令牌,而不是预期符合 RFC 规范的值 Bearer。使用试用此 API 时,无效的 token_type 响应可能会导致 Access denied 错误。

如需更正此问题,您可以创建 JavaScript 或 AssignMessage 政策,以将政策输出转换为符合规范的格式。如需了解详情,请参阅 不符合 RFC 规范的行为