狐狸 SDK 🦊🧱
Universal SDK用于全服务器侧和有限的内浏览器访问Foxy hAPI.
设置
安装软件包 :
npm i @foxy.io/sdk
然后使用普通JS( 第 10- 12 号) 导入 :
const FoxySDK = require('@foxy.io/sdk');
或 ES 模块(节点13+, TypeScript, 浏览器):
import * as FoxySDK from '@foxy.io/sdk';
开始
我们的SDK由三个主要部分组成,通过主文件提供:
- 后端 用于构建从保险箱直接连接到hAPI的Node.JS应用程序 服务器侧 环境。 除了API客户端之外,您还会发现一些有用的功能,用于HMAC的签名,从响应中去掉敏感信息,并在此导出别名下进行webhook验证.
- 客户 是用来建造的 普遍 与特定商店客户可用的hAPI子集交互的应用程序和网站. 此导出也作为我们CDN的预建库提供.
- 核心:用于构建自定义的API客户端,与Hypermedia API端点交互. 这是其他每个内置API客户端所依赖的SDK最先进的部分. 你可以运行它服务器和客户端.
后端和客户输出 API 客户类,用于配合相应的端点. 如果您正在使用 TypeScript, 您也会看到 API 特定超介质关系和图的导出类型 Rels 财务报告和审定财务报表 Graph。让我们使用 FoxySDK.Backend.API 类 :
const api = new FoxySDK.Backend.API({
refreshToken: 'your refresh token',
clientSecret: 'your client secret',
clientId: 'your client id',
});
这将创建 HAPI 第 1 版客户端连接到 https://api.foxy.io/ 带有给定的证书,使用内存存储以获取符和URL解析,日志错误,警告和信息消息到控制台. 您可以在构造参数中自定义其中每一个默认值, 您也会看到客户 API 的类似选项 .
无论你合作的API类型如何,在每个节点上都会看到相同的方法: .follow(), (中文(简体) ), .get(), (中文(简体) ), .put(), (中文(简体) ), .post(), (中文(简体) ), .patch() 财务报告和审定财务报表 .delete()。这里是您如何在三个步骤中使用它们:
1. 寻找节点
要访问 hAPI 端点, 您不会在 URL 中键入, 而是通过链接通过 API 图表, 直到您到达目标 。 例如,要看到您的交易,需要加载书签 URL(https://api.foxy.io/,将您的商店装入 bookmark._links['fx:store'].href ,然后才能进行交易 store._links['fx:transactions'].href随着我们的SDK,这个漫长的过程变成了一行:
const transactionsNode = api.follow('fx:store').follow('fx:transactions');
开始的字符串比特 fx: 如果您使用一个编辑器支持基于 TypeScript 定义的代码自动补全, 我们将尽可能为可用的目录提供建议.
现在我们有了节点,让我们从中获取一些数据:
2. 获得一些数据
每个节点都有与所支持的HTTP方法相对应的类方法. 例如,制作 GET 请求,我们可以打电话 .get()数字 :
const transactionsResponse = await transactionsNode.get();
我们刚刚称之为“返回承诺”的方法(即使用 await 关键词),用增强版本的本地 回应 对象,使您能够访问响应状态、信头和更多。 但是现在我们只想让我们的JSON:
const transactions = await transactionsResponse.json();
没问题! 现在你有API的响应 与计划一样 文档 随你便 是的,我们也有它的类型定义, 这意味着你会得到类型检查 TypeScript 和丰富的自动化建议 与内含的docs 在每一个支持它们的编辑器。 但如果我们能更进一步呢?
3. 提出复杂的询问
通常你需要获取一组特定项目, 可能应用一些过滤器, 跳过几个条目, 通过请求部分资源来加速事情的进行 。 您可以使用来自我们的查询参数使用 hAPI来完成 欺骗表我们的SDK为这些参数提供了方便的快捷键 .get() 方法( 全部可选) :
const transactionsResponse = await transactionsNode.get({
zoom: { customer: ['default_billing_address'] },
filters: ['total_order:greaterthan=50', 'attributes:name[color]=red'],
fields: ['id', 'total_order', 'currency_code'],
offset: 25,
limit: 10,
});
响应类型也会尽可能地与您的查询相匹配,使您能够在点击API前消除可能的错误. 例如,对于上述请求,每笔交易将只有这3个字段,只有2个嵌入地块(+由于默认包含而支持的属性).
收益:后续反应
中每个链接 _links 从我们SDK收到的对象包括和正则节点相同的方法,所以你可以做这样的事情:
const nextTransactionsPage = await transactions._links.next.get();
还可以使用嵌入式资源并跟踪,您将获得自动补全和输入式检查全程:
const recentSubscriptions = await transactions._embedded['fx:customer']._links['fx:subscriptions'].follow('last').get();
发展
要启动, 克隆本地重播并安装依赖性 :
git clone https://github.com/foxy/foxy-sdk.git && cd foxy-sdk && npm i
您也可以通过在工程文件夹中运行以下内容来构建此软件包,并在本地测试它:
npm pack
使用下列命令进行测试:
npm test # run all tests
npm run test:watch # watch files for changes and re-run relevant tests
所有最新特稿均发表于 β 语录 分支到 beta 发行渠道. 如果你提交了公关,请瞄准 beta 还有 发表于 主要。 。 。 .