EasyPost 节点客户端库
EasyPost,简单的航运解决方案. 你可以注册一个账户在 https://easypost.com (中文(中国大陆) )。 。 。 .
注: 这个库意在用于后端节点服务,而不是通过浏览器用于前端的Javascript项目.
安装
npm install --save @easypost/api
您可以从此项目下载各种已建资产 页 次。 。 。 .
使用量
简单创建并购买运出实例( B) :
const EasyPostClient = require('@easypost/api');
const client = new EasyPostClient(process.env.EASYPOST_API_KEY);
const shipment = await client.Shipment.create({
from_address: {
street1: '417 MONTGOMERY ST',
street2: 'FLOOR 5',
city: 'SAN FRANCISCO',
state: 'CA',
zip: '94104',
country: 'US',
company: 'EasyPost',
phone: '415-123-4567',
},
to_address: {
name: 'Dr. Steve Brule',
street1: '179 N Harbor Dr',
city: 'Redondo Beach',
state: 'CA',
zip: '90277',
country: 'US',
phone: '4155559999',
},
parcel: {
length: 8,
width: 5,
height: 5,
weight: 5,
},
});
const boughtShipment = await client.Shipment.buy(shipment.id, shipment.lowestRate());
console.log(boughtShipment);
选项
您可以构造一个 API 实例, 并附带某些选项 :
const client = new EasyPostClient(process.env.EASYPOST_API_KEY, {
timeout: 120000,
baseUrl: 'https://api.easypost.com/v2/',
useProxy: false,
httpMiddleware: (f) => f,
httpClient: fetch,
requestMiddleware: (r) => r,
});
超时
以毫秒计, 请求失败 .
基数Url
更改 API 库使用的基础 URL 。 代理请求时有用 从前端通过服务器.
使用 Proxy
禁用 API 密钥 。 如果您代理端请求通过前端, 则有用 一个服务器.
httpMiddle 软件
将 HTTP 传输功能包起来的函数 .
const wrapFetch = (f) => (input, init) => {
// custom behavior here
return f(input, init);
};
const client = new EasyPostClient('my-key', {
httpMiddleware: wrapFetch,
});
httpclient 语句
HTTP 请求所用的函数 。 内置默认值 fetch (节点18+).
您可以在自定义环境、 测试或仪表上覆盖 .
请求中间软件
需要兼容请求对象并返回的函数 。 现有
使用中间软件模式 auth, (中文(简体) ), query,以及 send 仍然被支持.
const client = new EasyPostClient('my-key', {
requestMiddleware: (r) => {
r.set({ 'X-Custom-Header': 'my-value' });
return r;
},
});
HTTP 钩子
如果您需要或想要查看EasyPost API在幕后提出的请求,您可以提供功能来倾听请求和/或回应. 可以在创建客户端的辅助功能中做到这一点.
const client = new EasyPostClient('my-key');
const logOutgoingRequest = (request) => console.log('Outgoing:', request);
const logResponse = (response) => console.log('Response:', response);
// optionally add your hook to listen for outgoing requests
client.addRequestHook(logOutgoingRequest);
// and optionally the hook for the response
client.addResponseHook(logResponse);
// ...do other stuff
// remove that request hook
client.removeRequestHook(logOutgoingRequest);
// and the response one
client.removeResponseHook(logResponse);
// or clear all the hooks at once
client.clearRequestHooks();
client.clearResponseHooks();
说明: 您无法使用这些钩子编辑或以其他方式影响请求 。 它们纯粹是为了调试或伐木目的.
文档
API 文档可见于: https://docs.easypost.com (中文(简体) )。 。 。 .
图书馆文件可上网查阅: https://easypost.github.io/easypost-node/ 页面存档备份,存于互联网档案馆 或通过当地建造 just docs 命令.
更新这个项目的主要版本? 参见 升级指南。 。 。 .
支助
新的特性和错误修正在本库最新的主要发行上发布. 如果您是这个库的旧主版, 我们建议升级到最近的版, 利用新的功能、错误修正和安全补丁。 这个图书馆的旧版本将继续工作,只要它们与API版本捆绑在一起,就可以提供;不过,它们不会收到更新,被认为是EOL.
额外的支持,见我们 整体支助政策。 。 。 .
发展
# Install dependencies
just install
# Install style guides (Unix only)
just install-styleguide
# Update dependencies
just update
# Build the project
just build
# Lint the project
just lint
just lint-fix
# Run tests (these will be transpiled on the fly)
EASYPOST_TEST_API_KEY=123... EASYPOST_PROD_API_KEY=123... just test
EASYPOST_TEST_API_KEY=123... EASYPOST_PROD_API_KEY=123... just coverage
# Run security analysis
just scan
# Generate library documentation
just docs
# Update submodules
just update-examples-submodule
字体定义
从开始 v5.3.0,此项目包含 Typescript 定义.
当前的定义来自源代码,并与软件包一起发布于 dist/types。 。 。 .
导入时不需要更改消费者配置 @easypost/api 从包根.
字体排除
- 我们目前没有提供这些定义的绝对Typed版本
- 预定义软件包( 见 载体元数据 详细情况请见我们的文件)
- 承运人服务水平(见 载体元数据 详细情况请见我们的文件)
- 承运人名单(见 载体类型 详细情况请见我们的文件)
- 我们不需要在这个库中全面使用参数或属性. 详情见我们的文件,说明每项要求需要什么
测试
这个项目中的测试套房是专门为在每次运行中产生一致的结果而建造的,无论它们何时运行或由谁运行. 这个项目使用 波利兹 (AKA:VCR)通过"盒"来记录并重放HTTP请求和回应. 当套件运行时,每个测试函数的HTTP请求和回复如果不存在,将会被保存到磁带中,如果已经存在,则会从这个被保存的文件重放,这样可以节省每次测试运行时进行活API调用的需要. 如果收到关于磁带过期的错误,则删除并重新记录磁带,以确保数据是最新的.
敏感数据 : 我们在录制磁带时, 尽量加入洗涤器 以获取敏感数据 以免PII或敏感信息 持续控制版本; 然而,请确保在录制或重新录制磁带时, 在您进行修改之前, 没有PII或敏感信息 通过检查磁带来维持.
进行修改 : 如果您添加了此工程, 请求/ 答复会自动为您录制 。 在修改此工程时, 您需要重新录制相关的磁带, 强制进行新的实时 API 调用测试, 然后记录下次运行时使用的请求/ 答复 .
测试数据 : 测试套间内装有各种可供使用的有用装置,每套都完全独立于某一特定用户 除USPS载体账户ID外 (见 单位测试 API 密钥 ),它具有我们内部测试用户ID的倒数值. 一些固定装置使用硬编码日期,如果磁带被重新录入,可能需要加码(如报告或取出).
单位测试 API 密钥
每次测试都需要以下内容:
EASYPOST_TEST_API_KEYEASYPOST_PROD_API_KEY
一些测试可能需要一个具有特定一组功能的 EasyPost 用户,例如 Partner 用户在创建推荐时。 我们曾试图在各自的指令中提及这些职能。 在需要重新录制用于适用测试的磁带时,需要提供下列资料:
USPS_CARRIER_ACCOUNT_ID(例如:为非EasyPost雇员购买一通电话)PARTNER_USER_PROD_API_KEY(例如:创建推荐用户)REFERRAL_CUSTOMER_PROD_API_KEY(例如:向查询用户添加信用卡)