好恶心
JavaScript SDK用于索克航班API的公共路线.
安装
aube add @bilte-co/socky-js
# or: npm i @bilte-co/socky-js
快速启动( ESM)
import { Socky } from 'socky';
// Do not expose your API key to the client.
const client = new Socky({ apiKey: process.env.SOCKY_API_KEY });
// Get flight data
const flight = await client.flights.get('01JCTA5XQZF8B3G5N2W9K7M4VP');
// Get aircraft information
const aircraft = await client.aircraft.get('N12345');
// List stations with pagination
const stations = await client.stations.list();
console.log(stations.items);
console.log(stations.hasMore);
快速启动( CJS)
const { Socky } = require('socky');
// Do not expose your API key to the client.
const client = new Socky({ apiKey: process.env.SOCKY_API_KEY });
// Use the client as shown above
配置
SDK接受以下配置选项:
const client = new Socky({
apiKey: 'your-api-key', // Required
baseUrl: 'https://api.custom.com/', // Optional, defaults to 'https://api.socky.flights/'
version: 'v1', // Optional, defaults to 'v1'
timeoutMs: 30000, // Optional, request timeout in ms (default: 30000)
retries: 2, // Optional, number of retries on failure (default: 2)
retryBackoffMs: 250, // Optional, initial retry backoff in ms (default: 250)
userAgent: 'my-app/1.0', // Optional, custom user agent string
});
处理错误
SDK 投出键 ApiError 有详细信息的实例 :
import { Socky, ApiError } from 'socky';
try {
const flight = await client.flights.get('invalid-id');
} catch (error) {
if (error instanceof ApiError) {
console.log(error.status); // HTTP status code
console.log(error.message); // Error message
console.log(error.code); // Optional error code from API
console.log(error.requestId); // Optional request ID for debugging
console.log(error.retryAfterMs); // Optional retry-after hint
console.log(error.body); // Raw error response body
}
}
倾斜
平分终点返回 a Page<T> 用于重排的帮助对象 :
// Manual pagination
let page = await client.stations.list();
console.log(page.items);
if (page.hasMore && page.nextCursor) {
const nextPage = await client.stations.list(page.nextCursor);
}
// Automatic page iteration
for await (const page of client.stations.paginatePages(20, 10)) {
console.log(`Page with ${page.items.length} stations`);
}
// Automatic item iteration
for await (const station of client.stations.paginateItems(20, 10)) {
console.log(station.code);
}
复读和超时
SDK 自动重试请求短暂错误失败 :
- 检讨:429起(限速)、503起、504起和5xx出错
- 尊重
Retry-After页眉 - 使用以指数为单位的反转
- 网络错误也被重审
- 默认情况下只重审 GET 请求
API 密码
SDK提供下列Socky Flights API端点的出入口:
飞机
aircraft.get(registration)- 通过登记获得飞机aircraft.list(cursor?, limit?)- 列入清单的飞机(贴上标签)aircraft.position(registration)- 获取最后已知位置aircraft.flights(registration, cursor?, limit?)- 获得飞机飞行(油漆)
飞行
flights.get(ulid)- 通过身份证明飞行flights.track(ulid)- 获取飞行轨道数据
地点
locations.get(lat, lng)- 获取位置信息
职位
positions.latest(tails)- 获取飞机的最新位置(接受字符串或阵列)
路线
routes.get(from, to)- 获取两个车站之间的路线信息
车站
stations.get(code)- 按密码报到stations.list(cursor?, limit?)- 列出所有站点(贴上)stations.search(query)- 搜索站的名称或代码stations.proximity({ latitude, longitude, distance?, unit? })- 寻找坐标附近的站点stations.near(code, { distance?, unit? })- 在另一站附近寻找站台stations.paginatePages(limit?, pageLimit?)- 逐行逐行stations.paginateItems(limit?, pageLimit?)- 个别物品的提法
节点支持
节点 18.
许可证
阿帕奇 - 2.0