本文提供了一份详尽的指南,讲述了如何为QuickNode Marketplace创建和提交REST API附加组件。文章从申请开发者账户开始,逐步讲解了创建、测试和向市场提交API添加的各个步骤,包含必要的资源和工具链接,确保读者了解整个开发和上线过程。
为 QuickNode Marketplace 创建 REST API 插件,使你能够通过添加自定义 REST 端点来扩展 QuickNode 的功能。开发 QuickNode 市场插件,可以让你在 QuickNode Marketplace 部署和盈利你的 API,提供对广大开发者社区的访问。 一旦你的插件获得批准,它将被展示在 QuickNode Marketplace 上,并且你将获得 QuickNode 团队的支持和推广,以帮助你接触潜在用户并最大化你的服务的影响力。
在本指南中,我们将逐步介绍创建你自己 REST API 插件的步骤,同时提供对相关主题的深入指南和资源的链接。
首先,让我们申请一个开发者帐户,以便能够在 QuickNode Marketplace 创建插件。在 QuickNode 控制台中,点击左侧导航栏中的 Switch to Partners 选项卡,然后填写市场帐户申请。以下是表单的预览:
新市场合作伙伴的审批过程可能需要最多 7 个工作日,但通常,你可以期待在 1-2 个工作日内收到回复。
创建 REST API 插件涉及到开发和测试你的服务,以确保其符合 QuickNode 的标准。
你可以从头开始开发你的 REST API 插件,专注于构建用于供给、健康检查以及你希望公开的 REST API 路径的必要端点。
QuickNode 提供的启动代码包括供给和健康检查功能;然而,这些启动代码目前不支持 REST API 插件。我们正在积极工作以在启动代码中添加对 REST API 的支持,相关功能将在不久后推出。现在,从头开始构建你的 REST API 插件是推荐的方法。
在开发过程中,你需要实现必要的供给和健康检查端点,以及你希望公开的 REST API 路径。
编程语言 | 启动代码仓库 |
---|---|
Python | QuickNode Marketplace 启动代码 - Python |
JavaScript | QuickNode Marketplace 启动代码 - JavaScript |
Ruby | QuickNode Marketplace 启动代码 - Ruby |
Go | QuickNode Marketplace 启动代码 - Go |
Ruby on Rails | QuickNode Marketplace 启动代码 - Ruby on Rails |
你的插件必须包括以下端点以管理其生命周期:
端点 | 描述 |
---|---|
/provision |
用于为 QuickNode 用户提供你的插件的新实例。 |
/deprovision |
当用户决定停止使用你的插件时,处理插件实例的移除。 |
/deactivate_endpoint |
停用与你的插件关联的特定端点。 |
/update |
允许更新现有的供给插件实例。 |
实现一个健康检查端点(例如,/healthcheck
),供 QuickNode 用于验证你的服务的可用性。
如果你的插件包含外部仪表板,你可能需要实现基于 JWT 的单点登录。
在将你的 REST API 插件提交到 QuickNode Marketplace 之前,测试你的插件是一个关键步骤。qn-marketplace-cli
工具旨在帮助你在本地开发环境或服务器中直接测试插件的功能。
虽然有关如何使用此工具的所有信息在 GitHub 仓库 中都有详细说明,但让我们一起查看一些信息。
在继续之前,确保你的插件在开始测试之前正在运行。在配置测试时使用适当的主机 URL(例如, http://localhost:3000 或你的远程服务器 URL)。
qn-marketplace-cli
首先,通过从 QuickNode GitHub 仓库 下载预构建的二进制文件,在你的机器上安装 qn-marketplace-cli
。另外,如果你愿意,可以从源代码构建它。
由于你的插件必须实现四个供给端点以管理其生命周期( /provision
,/deprovision
,/deactivate_endpoint
和 /update
),你可以使用 CLI 工具单独测试这些端点或一次性测试所有端点。
信息
安装 qn-marketplace-cli
工具后,你可能需要提供执行它的正确路径。例如:
go/bin/qn-marketplace-cli help
或者,你可以导航到 CLI 工具所在的目录并直接运行命令:
cd go/bin/
./qn-marketplace-cli help
pudd
命令模拟整个供给、更新、停用和解除供给的生命周期。下面是命令以及你需要使用的标志的说明:
一次性测试所有供给
./qn-marketplace-cli pudd \
--base-url=http://localhost:3000/provisioning \
--basic-auth=<your-auth-code> \
--chain=<selected-chain> \
--network=<selected-network> \
--plan=<your-plan-slug> \
--endpoint-url=<your-endpoint-url> \
--wss-url=<your-wss-url>
标志 | 描述 |
---|---|
--base-url |
插件的供给 API 的基本 URL。 |
--basic-auth |
插件的基本身份验证凭证。默认值为 username = Aladdin 和 password = open sesame (默认 "QWxhZGRpbjpvcGVuIHNlc2FtZQ==")。 |
--chain |
供给插件的链(默认 "ethereum")。 |
--endpoint-id |
为插件供给的端点 ID(可选)(默认 "72b1201c-84fd-4244-ad21-f056a97f043d")。 |
--endpoint-url |
为插件供给的端点 URL(可选 - 默认值为以太坊主网端点( default " https://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/)。 |
--network |
供给插件的网络(默认 "mainnet")。 |
--plan |
为插件供给的计划(默认 "discover")。 |
--quicknode-id |
为插件供给的 QuickNode ID(可选)(默认 "5f649496-0d0a-4637-9b4b-e96fbe19bcdd")。 |
--wss-url |
为插件供给的 WebSocket URL(可选 - 默认值为以太坊主网端点)(默认 "wss://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/")。 |
如果你需要有关任何命令或标志的更多信息,CLI 提供了内置帮助选项。你可以按如下方式访问常规帮助或单个命令的具体帮助:
常规帮助
./qn-marketplace-cli help
命令特定帮助
./qn-marketplace-cli pudd --help
qn-marketplace-cli 允许你在本地和远程服务器上测试插件。对于本地测试,可以针对在 localhost 上托管的服务运行命令。对于服务器测试,只需将命令指向你已部署的服务。
例如,如果你使用的是我们的 QuickNode Marketplace 启动代码 - JavaScript,这是一个使用 Node.js 构建的示例插件,你可以使用以下命令在本地测试供给。这假定你将用户名和密码分别设置为 username
和 password
。
示例 PUDD 命令
./qn-marketplace-cli pudd \
--base-url http://localhost:3030/provisioning \
--quicknode-id foobar \
--endpoint-id bazbaz \
--chain ethereum \
--network mainnet \
--basic-auth dXNlcm5hbWU6cGFzc3dvcmQ=
CLI 还支持测试 REST API 方法,使你能够确保你的 REST API 插件正常工作。以下是你需要使用的命令:
示例 REST API 测试命令
./qn-marketplace-cli rest \
--rest-url=http://localhost:3000/your-rest-path \
--rest-verb=POST \
--rest-body='{"key":"value"}' \
--basic-auth=<your-auth-code> \
--chain=ethereum \
--network=mainnet \
--plan=<your-plan-slug> \
--quicknode-id=<your-quicknode-id> \
--endpoint-id=<your-endpoint-id> \
--endpoint-url=<your-endpoint-url>\
--wss-url=<your-wss-url>
除了前面示例中提到的标志之外,特定于 REST 命令的标志描述如下:
标志 | 描述 |
---|---|
--rest-body |
在 REST 调用中使用的 REST 请求正文。 |
--rest-url |
进行 REST 调用的 URL。 |
--rest-verb |
要使用的 REST HTTP 方法或动词(例如,GET 或 POST)。 |
信息
所有供给和更新 API 都必须使用 HTTP 基本身份验证 进行安全保护。你将在市场入驻过程中收到凭证,这些凭证可以在插件的安全选项卡中访问。对于本地测试,你可以设置自己的用户名和密码,并使用 Base64 生成 Basic Authentication 值。
为了进行 Base64 编码,你可以在 这样的 网站上以 username:password
格式创建你的值。
ngrok
测试对于本地测试,ngrok
可以是一个有用的工具,通过安全隧道将本地服务暴露给互联网。这允许你在测试供给、更新和解除供给操作时模拟实际的工作条件。
要设置 ngrok
,通过运行适合你操作系统的命令安装它:
brew install ngrok/ngrok/ngrok
- Windows
choco install ngrok
- Linux
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok
安装 `ngrok` 后,确保你的本地服务器在端口 3000(或你所需的端口)上运行。然后,运行 ngrok 创建一个指向你本地服务的安全 URL:
ngrok http 3000
这将提供一个公共 URL(例如, [https://abcd1234.ngrok.io](https://abcd1234.ngrok.io/)),你可以使用该 URL 通过 `qn-marketplace-cli` 测试你的插件,就像它在实际服务器上部署一样。
### 第三步:参考相关指南
在你开发和测试插件时,你可能需要参考更多指南和资源:
- [市场的审批流程是如何工作的](https://learnblockchain.cn/article/11891)
- [图标指南](https://learnblockchain.cn/article/11526)
- [截图指南](https://learnblockchain.cn/article/11526)
测试清单
在将插件提交到 QuickNode Marketplace 之前,彻底测试插件至关重要。这涉及运行 PUDD 命令以测试所有供给端点,验证健康检查,并测试你的插件提供的所有 REST 路径。
请放心,如果有任何问题需要进一步关注,QuickNode 团队在内部评审过程中会提供反馈。
## 将你的 REST API 插件添加到市场
一旦你的 REST API 插件开发和测试完成,下一步就是将其提交到 QuickNode Marketplace。本节涵盖在市场中创建你的插件的过程,包括填写所需表单和提交你的插件以供审批。
### 第一步:在市场中创建你的插件
要开始,登录你的 QuickNode 控制台,导航到 **Switch to Partners** 选项卡。在这里,你将开始将你的 REST API 插件添加到市场的过程。
### 第二步:插件表单 - 基本
你需要提供有关你的插件的详细信息,这些信息分为几个部分:
#### 基本信息
- 插件名称和描述:为你的插件提供名称和描述。
- 图标和截图:上传代表你插件的视觉元素。 **请参阅 [图标指南](https://learnblockchain.cn/article/11526) 和 [截图指南](https://learnblockchain.cn/article/11526) 以获取最佳实践**
- 支持的链和网络:列出你的插件支持的链和网络(例如,以太坊主网)。
- 供给相关的 URL:提供供给、解除供给等的 URL(例如, [https://api.yourservice.com/provision](https://api.yourservice.com/provision))。
- JWT 秘钥: (如果适用)生成并提供一个 JWT 秘钥(你可以使用 _`openssl rand -hex 32`_ 命令来生成随机的 JWT 秘钥代码。)。
- 支持邮箱和 URL:提供客户支持的联系信息。
- 警报邮箱:输入用于接收有关你插件状态的警报的电子邮件地址。
- 使用客户的 QuickNode API 端点:指定你的插件是否会与 QuickNode API 端点进行交互。
#### 插件类型
1. 选择插件类型:选择 **REST API**。
2. 添加 REST 路径:定义你的插件将公开的 REST 路径,包括:
- HTTP 方法(例如,`GET`,`POST`)
- REST API URL(例如, [https://api.yourservice.com/prices](https://api.yourservice.com/prices))
- 健康检查 URL(例如, [https://api.yourservice.com/healthcheck](https://api.yourservice.com/healthcheck))
- 文档 URL(例如, [https://yourservice.com/docs/api](https://yourservice.com/docs/api))
- 描述(例如,获取支持的代币的最新加密货币价格。)
- 示例请求正文(例如, `{"token": "ETH", "currency": "USD"}`)

### 第三步:插件表单 - 功能
突出你插件的关键特性,让用户受益(例如,实时价格更新,支持多种加密货币)。
### 第四步:插件表单 - 计划
列出你将为 QuickNode 用户提供的定价计划(例如,免费层级具有有限请求,高级层级具有无限访问)。
### 第五步:插件表单 - 测试访问
完成提交表单后,请求 QuickNode 团队的测试访问。他们将审核你的插件,如果一切正常,将向你授予在 QuickNode 环境中测试插件的访问权限。
#### 市场插件批准标准
QuickNode 批准在以下一个或多个标准中表现出色的插件:
1. **可扩展性**:插件在 QuickNode 高流量需求下展示出强大的性能。
2. **专用功能**:插件提供独特的、专门用于解决特定区块链开发需求的功能。
3. **创新**:插件引入开创性的能力或对区块链交互的新方法。
4. **核心基础设施**:插件作为我们客户区块链开发堆栈中的一个重要组成部分。
符合这些标准的插件不仅增强了 QuickNode 的生态系统,还为用户带来了显著的价值。
如果你的插件符合一个或多个要求,我们将有很可能联系你以了解更多信息并加速你插件的发布。
## 上线
经过成功测试和批准后,你将在结账页面的应用程序、端点的插件选项卡以及公共网站上获得位置。你将在 QuickNode MarketPlace 上得到展示,并获得额外的推广支持,以帮助你接触潜在客户。
## 结束语
恭喜你创建并将你的 REST API 插件提交到 QuickNode Marketplace!
如果你有任何疑问,请随时使用我们在 [Discord](https://discord.gg/quicknode) 上的专用频道或使用下面的表单提供反馈。通过关注我们的 [Twitter](https://twitter.com/QuickNode) 和 [Telegram 公告频道](https://t.me/quicknodehq),以及时了解最新情况。
#### 我们 ❤️ 反馈!
[告诉我们](https://airtable.com/shrKKKP7O1Uw3ZcUB?prefill_Guide+Name=How%20to%20Create%20a%20REST%20API%20Add-On%20for%20Marketplace) 如果你有任何反馈或新的主题请求。我们很乐意听到你的声音。
## 额外资源
- [QuickNode Marketplace](https://marketplace.quicknode.com/)
- [所有市场合作伙伴指南](https://learnblockchain.cn/tags/marketplace-partner)
>- 原文链接: [quicknode.com/guides/qui...](https://www.quicknode.com/guides/quicknode-products/marketplace/how-to-create-a-rest-api-add-on-for-marketplace)
>- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!