19 个版本

0.1.0 2023年9月30日
0.0.19 2024年4月20日
0.0.18 2023年11月6日
0.0.14 2023年10月30日
0.0.1 2023年9月30日

1524Web编程

MIT 许可证

170KB
4K SLoC

Crates.io Documentation Codecov Builds

有关此crate的更多详细信息以及示例,请查看文档

Marketstack API

use marketstack::eod::Eod;
use marketstack::Marketstack;
use marketstack::EodData;
use marketstack::{self, Query};

// Create the http client. If you are a paid user, use `Marketstack::new()`.
let client = Marketstack::new_insecure("api.marketstack.com", "private-token").unwrap();

// Create endpoint to query end of day data for AAPL. Corresponds to `eod` endpoint.
let endpoint = Eod::builder().symbol("AAPL").build().unwrap();

// Call the endpoint and retrieve data from Marketstack. Data is deserialized
// for you into a Rust type: `EodData`.
let eod_data: EodData = endpoint.query(&client).unwrap();

// Some endpoints support pagination. Since Marketstack does pagination through query
// params, we simply specify them in the endpoint builder.
// Note that there are limits defined, and therefore, limit(5) is fallible and returns
// a Result.
let pageable_endpoint = Eod::builder().symbol("AAPL").limit(5).unwrap().build().unwrap();

关于 Marketstack-rs

此库实现了一个与 Marketstack API 通信的接口。并非所有端点都已实现(一些是付费用户,而我是免费的),但欢迎提出拉取请求。

此API绑定基于 Marketstack 的 v1 API。

所有支持的端点都位于 api 模块下。每个端点都可以通过“构建器”模式(在这种情况下,derive_builder crate 使其实现非常直观)方便地构建,以提供支持的字段。要使用端点,您可以使用 Query 特性进行查询。

所有端点都返回调用者选择的实现 serdeDeserialize 特性的数据类型。调用者应定义自己的结构以从API获取数据,尽管大多数已经为调用者实现。然而,这提供了灵活性,允许用户适应 Marketstack 的新版本,或轻松实现尚未由此 crate 实现的端点查询数据。用户无需等待此 crate 实现任何端点。

常见问题解答

这个库是否已准备好投入生产使用?

这个 crate 是从个人项目需要从可负担/免费的数据提供商拉取数据的需求中发展而来的。我注意到还没有人创建这样的库,因此我亲自实现了它。虽然我开始使用它,但我还没有对其进行过广泛的测试,并且由于我没有访问权限并且无法从文档中识别其结构,某些付费端点无法实现。

因此,我建议用户不要将其用于生产级项目。话虽如此,请随时提出问题、创建拉取请求或分支此存储库。

致谢

该crate的设计灵感来源于Gitlab crate维护者的有益工作,以及Ben Boeckel撰写的启迪人心的博客文章

依赖项

~6–17MB
~252K SLoC