合作伙伴门户
与 AI Agent 一起构建
API合作伙伴门户后台

API合作伙伴门户后台模板
合作伙伴访问、API流量和文档

一个可投入生产的API合作伙伴门户后台在Back4app上,包含用户、合作伙伴组织、API密钥、使用日志和开发文档。包括ER图、数据字典、JSON模式、API游乐场,以及一个AI代理提示,便于快速设置。

门户要点

此模板为您提供一个具有 APIKey 管理、UsageLog 审核和 DeveloperDoc 发布的 API 合作伙伴门户后端,以便内部团队和外部合作伙伴共享一个工作平台。

  1. APIKey 生命周期控制使用合作伙伴所有权、tokenPrefix、scopes、isActive 和 lastUsedAt 字段建模 APIKey 记录。
  2. UsageLog 可见性跟踪每个 apiKey 的 UsageLog 条目,以便您可以审查端点调用、statusCode 峰值和 requestCount 总数。
  3. DeveloperDoc 更新使用标题、slug、内容、apiVersion 和 isPublished 保持 DeveloperDoc 记录与发布的 API 指导保持一致。
  4. 合作伙伴访问边界使用 ACL 和 CLP 来将 PartnerOrganization 工作空间、APIKey 行和 UsageLog 记录限制在正确的帐户范围内。
  5. 跨平台门户后台通过一个 REST 和 GraphQL API 为用户、PartnerOrganization、APIKey、UsageLog 和 DeveloperDoc 提供 Web 和移动客户端服务。

什么是 API 合作伙伴门户模板?

权限在 API 合作伙伴门户中很重要:合作伙伴、员工和客户应该看到他们角色所需的内容 — 没有多余,也没有不足。可靠性是一项特性,而不是脚注。该模板基于 Back4app 对 PartnerOrganization、APIKey、UsageLog 和 DeveloperDoc 进行建模,具有基于角色的访问权限,因此每个 API 合作伙伴门户团队成员都能看到他们拥有的管道切片。该模式涵盖用户(用户名,电子邮件,密码,角色)、PartnerOrganization(名称,状态,主要联系人,支持级别)、APIKey(keyName,tokenPrefix,scopes,isActive,lastUsedAt,partner,createdBy)、UsageLog(partner,apiKey,endpoint,method,statusCode,requestCount,occurredAt)和 DeveloperDoc(标题,slug,内容,apiVersion,isPublished,所有者,合作伙伴),内置认证、可见性规则和合作伙伴工作流程支持。连接您喜欢的前端并更快交付。

最佳适合:

API 合作伙伴门户API密钥生命周期仪表盘使用日志分析控制台开发者文档发布中心B2B 集成团队选择 BaaS 以共享 API 访问

API 合作伙伴门户模板概述

大多数 API 合作伙伴门户错误都是无聊的:错过的时间戳、重复的行,或者昨天正确今天错误的计数。

PartnerOrganization、APIKey 和 UsageLog 背后的架构在各个中心和技术页面之间共享;切换框架不应意味着重新设计记录。

门户核心功能

这个中心中的每个技术卡片都使用相同的合作伙伴门户后台架构,包括用户、合作伙伴组织、APIKey、使用日志和开发者文档。

合作伙伴账号管理

PartnerOrganization 保持名称、状态、主要联系人和支持级别在一条记录中。

API 密钥生命周期跟踪

API 密钥存储 keyName、tokenPrefix、scopes、isActive、lastUsedAt、partner 和 createdBy。

使用日志审核

使用日志捕获合作伙伴、apiKey、端点、方法、状态码、请求计数和发生时间。

开发者文档发布

开发者文档存储标题、slug、内容、apiVersion、isPublished、拥有者和合作伙伴。

为什么要使用 Back4app 构建您的 API 合作伙伴门户后端?

Back4app 为您提供 User、PartnerOrganization、APIKey、UsageLog 和 DeveloperDoc 原语,以便您的团队可以专注于门户体验,而不是后端管道。

  • 令牌和合作伙伴管理: APIKey 与 PartnerOrganization 直接关联,使发放、轮换和停用更易于审计。
  • 回答实际问题的使用可见性: UsageLog 记录端点、方法、状态码和请求计数,以便支持团队可以在没有猜测的情况下追踪集成问题。
  • 无需发布瓶颈的文档更新: DeveloperDoc 为您提供一个结构化的位置,用于端点备注、版本指导和面向合作伙伴的变更历史。

首先围绕 APIKey、UsageLog 和 DeveloperDoc 构建门户,以便合作伙伴入职时有明确的后端合同。

门户好处

一个合作伙伴门户后台,集中管理APIKey工作、使用日志审核和开发者文档发布。

更快的合作伙伴入职

从 PartnerOrganization 和 APIKey 类开始,而不是从零开始组装令牌表和访问规则。

支持团队获得可用的上下文

当合作伙伴报告请求失败时,UsageLog 行显示端点、方法、状态码、请求次数和发生时间。

更安全的密钥处理

存储 tokenPrefix 和范围,而不是暴露原始密钥,并在密钥状态更改时轮换 isActive。

版本化文档保持组织

DeveloperDoc 提供发行说明、apiVersion 目标和发布状态的稳定结构。

每个客户端的单一 API 界面

Web 门户、移动管理工具和内部仪表板可以读取相同的 User、PartnerOrganization、APIKey、UsageLog 和 DeveloperDoc 数据。

AI 启动工作流程

使用一个结构化的提示快速生成架构、访问规则和门户框架。

准备好启动您的 API 合作伙伴门户了吗?

让 Back4app AI 代理为您的 API 合作伙伴门户后端搭建框架,并通过一个提示生成 APIKey、UsageLog 和 DeveloperDoc 流程。

免费开始 - 每月 50 次 AI 代理提示,无需信用卡

门户技术栈

此 API 合作门户后端模板包含所有内容。

前端
13+ 种技术
后端
Back4app
数据库
MongoDB
认证
内置认证 + 会话
API
REST 和 GraphQL
实时
Live Queries

合作伙伴关系图

API 合作伙伴门户后端架构的实体关系模型。

查看图表源
Mermaid
erDiagram
    User ||--o{ PartnerOrganization : "primaryContact"
    User ||--o{ APIKey : "createdBy"
    User ||--o{ DeveloperDoc : "owner"
    PartnerOrganization ||--o{ APIKey : "partner"
    PartnerOrganization ||--o{ UsageLog : "partner"
    PartnerOrganization ||--o{ DeveloperDoc : "partner"
    APIKey ||--o{ UsageLog : "apiKey"

    User {
        String objectId PK
        String username
        String email
        String password
        String role
        Date createdAt
        Date updatedAt
    }

    PartnerOrganization {
        String objectId PK
        String name
        String status
        String primaryContactId FK
        String supportTier
        Date createdAt
        Date updatedAt
    }

    APIKey {
        String objectId PK
        String keyName
        String tokenPrefix
        Array scopes
        Boolean isActive
        Date lastUsedAt
        String partnerId FK
        String createdById FK
        Date createdAt
        Date updatedAt
    }

    UsageLog {
        String objectId PK
        String partnerId FK
        String apiKeyId FK
        String endpoint
        String method
        Number statusCode
        Number requestCount
        Date occurredAt
        Date createdAt
        Date updatedAt
    }

    DeveloperDoc {
        String objectId PK
        String title
        String slug
        String content
        String apiVersion
        Boolean isPublished
        String ownerId FK
        String partnerId FK
        Date createdAt
        Date updatedAt
    }

门户集成流程

典型运行流程,包括登录、APIKey 查找、使用日志审查和开发文档更新。

查看图表源
Mermaid
sequenceDiagram
  participant User
  participant Portal as API Partner Portal App
  participant Back4app as Back4app Cloud

  User->>Portal: Sign in with portal credentials
  Portal->>Back4app: POST /login
  Back4app-->>Portal: Session token

  User->>Portal: Open APIKeys for a partner workspace
  Portal->>Back4app: GET /classes/APIKey?include=partner,createdBy
  Back4app-->>Portal: Token list with scopes and lastUsedAt

  User->>Portal: Create a new APIKey
  Portal->>Back4app: POST /classes/APIKey
  Back4app-->>Portal: APIKey objectId and tokenPrefix

  User->>Portal: Review UsageLog entries for the token
  Portal->>Back4app: GET /classes/UsageLog?include=partner,apiKey&order=-occurredAt
  Back4app-->>Portal: Usage history and statusCode totals

  opt Publish developer notes
    User->>Portal: Update a DeveloperDoc page
    Portal->>Back4app: PUT /classes/DeveloperDoc/:objectId
    Back4app-->>Portal: Updated markdown and publish state
  end

字段字典

API 合作伙伴门户模式中每个类的全文级别参考。

字段类型描述必填
objectIdStringAuto-generated unique identifier自动
usernameStringLogin name for a portal user
emailStringPrimary email address for portal access
passwordStringHashed password (write-only)
roleStringPortal role such as admin, partnerAdmin, or developer
createdAtDateAuto-generated creation timestamp自动
updatedAtDateAuto-generated last-update timestamp自动

7 字段在 User 中

访问控制

ACL 和 CLP 策略如何保护合作伙伴、APIKey 记录、UsageLog 条目和 DeveloperDoc 页面。

合作伙伴范围账户

每个 PartnerOrganization 记录应仅由门户管理员或指定的 primaryContact 用户进行编辑。

密钥机密性和轮换

在公共视图中存储 APIKey.tokenPrefix 和范围,并将原始密钥材料保留在浏览器之外。

使用日志读取边界

将UsageLog的读取限制为拥有APIKey的合作伙伴以及需要故障排查访问的支持角色。

JSON模式

原始JSON模式定义,准备复制到 Back4app 或用作实现参考。

JSON
{
  "classes": [
    {
      "className": "User",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "username": {
          "type": "String",
          "required": true
        },
        "email": {
          "type": "String",
          "required": true
        },
        "password": {
          "type": "String",
          "required": true
        },
        "role": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "PartnerOrganization",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "name": {
          "type": "String",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "primaryContact": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "supportTier": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "APIKey",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "keyName": {
          "type": "String",
          "required": true
        },
        "tokenPrefix": {
          "type": "String",
          "required": true
        },
        "scopes": {
          "type": "Array",
          "required": true
        },
        "isActive": {
          "type": "Boolean",
          "required": true
        },
        "lastUsedAt": {
          "type": "Date",
          "required": false
        },
        "partner": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PartnerOrganization"
        },
        "createdBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "UsageLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "partner": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PartnerOrganization"
        },
        "apiKey": {
          "type": "Pointer",
          "required": true,
          "targetClass": "APIKey"
        },
        "endpoint": {
          "type": "String",
          "required": true
        },
        "method": {
          "type": "String",
          "required": true
        },
        "statusCode": {
          "type": "Number",
          "required": true
        },
        "requestCount": {
          "type": "Number",
          "required": true
        },
        "occurredAt": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "DeveloperDoc",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "title": {
          "type": "String",
          "required": true
        },
        "slug": {
          "type": "String",
          "required": true
        },
        "content": {
          "type": "String",
          "required": true
        },
        "apiVersion": {
          "type": "String",
          "required": true
        },
        "isPublished": {
          "type": "Boolean",
          "required": true
        },
        "owner": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "partner": {
          "type": "Pointer",
          "required": false,
          "targetClass": "PartnerOrganization"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

与AI代理构建

使用 Back4app AI代理从此模板生成真实的API合作伙伴门户应用,包括前端、后端、身份验证以及APIKey、UsageLog和DeveloperDoc流程。

Back4app AI代理
准备构建
在Back4app上创建一个API合作门户应用后端,具有这个精确的架构和行为。

架构:
1. 用户:用户名(字符串,必填),电子邮箱(字符串,必填),密码(字符串,必填),角色(字符串,必填);对象Id、创建时间、更新时间(系统)。
2. 合作组织:名称(字符串,必填),状态(字符串,必填),主要联系人(指向用户的指针,必填),支持级别(字符串,可选);对象Id、创建时间、更新时间(系统)。
3. API密钥:密钥名(字符串,必填),令牌前缀(字符串,必填),范围(数组<字符串>,必填),是否活跃(布尔,必填),最后使用时间(日期,可选),合作伙伴(指向合作组织的指针,必填),创建者(指向用户的指针,必填);对象Id、创建时间、更新时间(系统)。
4. 使用日志:合作伙伴(指向合作组织的指针,必填),apiKey(指向APIKey的指针,必填),端点(字符串,必填),方法(字符串,必填),状态码(数字,必填),请求计数(数字,必填),发生时间(日期,必填);对象Id、创建时间、更新时间(系统)。
5. 开发者文档:标题(字符串,必填),标识符(字符串,必填),内容(字符串,必填),api版本(字符串,必填),是否发布(布尔,必填),所有者(指向用户的指针,必填),合作伙伴(指向合作组织的指针,可选);对象Id、创建时间、更新时间(系统)。

安全:
- 只有门户管理员或指定的所有者可以更新合作伙伴数据。只有批准的角色可以创建、旋转或撤销API密钥记录。限制使用日志的读取权限给拥有的合作伙伴和支持角色。

认证:
- 注册、登录、退出。

行为:
- 列出合作伙伴,创建和旋转API密钥记录,审查使用日志条目,并发布开发者文档页面。

交付:
- 带有架构、ACL、CLP的Back4app应用;合作伙伴帐户的前端,API密钥管理、使用日志和开发者文档。

按下面的按钮打开代理,模板提示已预填。

这是没有技术后缀的基础提示。您可以在之后调整生成的前端栈。

几分钟内部署每月50个免费提示无需信用卡

API游乐场

尝试REST和GraphQL端点,针对API合作门户架构。响应使用模拟数据,无需Back4app账户。

加载游乐场…

使用与此模板相同的架构。

选择您的技术栈

展开每个卡片以查看如何将 PartnerOrganization、APIKey 和 UsageLog 与您选择的技术栈集成。

Flutter API合作伙伴门户后台

React API合作伙伴门户后台

React 原生 API合作伙伴门户后台

Next.js API合作伙伴门户后台

JavaScript API合作伙伴门户后台

Android API合作伙伴门户后台

iOS API合作伙伴门户后台

Vue API合作伙伴门户后台

Angular API合作伙伴门户后台

GraphQL API合作伙伴门户后台

REST API API合作伙伴门户后台

PHP API合作伙伴门户后台

.NET API合作伙伴门户后台

您所获得的每项技术

每个技术栈使用相同的 API 合作伙伴门户后台结构和 API 合同。

统一的门户数据结构

使用一个一致的架构管理用户、PartnerOrganization、APIKey、UsageLog 和 DeveloperDoc 记录。

API 密钥生命周期控制

发行、旋转和撤销 APIKey 记录而不失去所有权路径。

支持团队的使用可见性

当合作伙伴需要帮助时,通过终端、方法和状态码检查UsageLog条目。

文档发布跟踪

发布带有特定于apiVersion的备注的DeveloperDoc更新供合作伙伴开发者使用。

用于门户客户端的REST/GraphQL API

通过一个API层提供内部管理工具和面向合作伙伴的应用程序。

用于合作伙伴工作流程的可扩展架构

添加类如公告或Webhook订阅,而无需重写门户核心。

门户技术栈比较

比较所有支持的技术的设置速度、SDK 风格和 AI 支持。

框架设置时间门户好处SDK 类型AI 支持
大约 5 分钟移动和网页的合作伙伴门户单一代码库。类型化 SDK完整
少于 5 分钟合作伙伴密钥和日志的快速网页仪表板。输入的 SDK完整
~3–7分钟支持合作伙伴的跨平台移动应用。输入的 SDK完整
快速(5分钟)设置服务器渲染的管理员门户,用于密钥和文档。输入的 SDK完整
~3–5分钟轻量级的网页集成用于合作伙伴操作。输入的 SDK完整
大约 5 分钟用于合作伙伴操作的原生 Android 应用。类型化 SDK完整
少于 5 分钟用于合作伙伴操作的原生 iOS 应用。类型化 SDK完整
约 3–7 分钟Reactive 的网页 UI 用于关键审核和文档。类型化 SDK完整
快速(5分钟)设置用于访问和使用审查的企业门户。输入的SDK完整
少于2分钟面向合作伙伴门户的灵活GraphQL API。GraphQL API完整
快速(2分钟)设置用于合作伙伴门户的REST API集成。REST API完整
约3分钟服务器端 PHP 后端用于合作伙伴门户。REST API完整
约 3–7 分钟.NET 后端用于合作伙伴门户。输入型 SDK完整

设置时间反映从项目启动到使用此模板架构的第一个 PartnerOrganization、APIKey 或 UsageLog 查询的预期持续时间。

门户问题

关于使用此模板构建 API 合作伙伴门户后端的常见问题。

当工作具有敏感性和截止期限时,健康的 API 合作伙伴门户管道是什么样的?
哪些 API 合作伙伴门户工作流最受益于结构化任务而不是自由形式的笔记?
访问模型对 API 合作伙伴门户的合作伙伴和承包商来说是否足够细粒度?
我如何使用 Flutter 查询密钥和日志?
我如何管理与 Next.js Server Actions 的 API 合作伙伴门户访问?
React 本地缓存使用日志可以离线吗?
我如何防止未授权的密钥访问?
在 Android 上显示合作伙伴使用情况的最佳方式是什么?
API 密钥轮换流程是如何从头到尾工作的?

受到全球开发者的信任

使用 Back4app 模板,快速加入团队发布 API 合作伙伴门户产品

G2 Users Love Us Badge

准备好构建您的 API 合作伙伴门户应用吗?

在几分钟内启动您的合作伙伴门户项目。无需信用卡。

选择技术