2个版本
0.1.1 | 2020年2月21日 |
---|---|
0.1.0 | 2020年2月21日 |
#6 in #经济学
335KB
5.5K SLoC
fred-rs
fred-rs 是一个简单的接口,用于访问圣路易斯联邦储备银行的 FRED API。
[dependencies]
fred_rs = "0.1.1"
有用链接
fred-rs 文档
FRED API 文档
FRED API 密钥信息
FRED (联邦储备经济数据)
FRED 是一个由圣路易斯联邦储备银行托管的大型在线经济数据库。该网站目前托管了约 "672,000 个来自 89 个来源的美国和国际时间序列数据",包括下面显示的失业率图表。
美国劳工统计局,失业率 [UNRATE],从 FRED,圣路易斯联邦储备银行获取;https://fred.stlouisfed.org/series/UNRATE,2020年2月20日。
通过 FRED API 可访问原始数据。 fred-rs 是 HTTPS 客户端和用户应用程序之间的中间层。通过向 fred_rs FredClient 发起结构化调用来请求 FRED API,并返回可用的数据对象(结构体)。
fred-rs 概述
fred-rs 作为中间人,方便对 FRED API 发起请求。用户应用程序创建并管理一个 FredClient
,该客户端管理 HTTPS 客户端并解析传入的数据。目前客户端使用 reqwest::blocking::client
,但如果需要异步版本,可以探索。下面的图表显示了从应用程序角度的一般架构。
用法
下面是访问观测值或数据序列的一般用法的示例。
use fred_rs::client::FredClient;
use fred_rs::series::observation::{Builder, Units, Frequency, Response};
// Create the client object
let mut c = match FredClient::new() {
Ok(c) => c,
Err(msg) => {
println!("{}", msg);
return
},
};
// Create the argument builder
let mut builder = Builder::new();
// Set the arguments for the builder
builder
.observation_start("2000-01-01")
.units(Units::PCH)
.frequency(Frequency::M);
// Make the request and pass in the builder to apply the arguments
let resp: Response = match c.series_observation("GNPCA", Some(builder)) {
Ok(resp) => resp,
Err(msg) => {
println!("{}", msg);
return
},
};
请求参数
所有端点都使用构建器方法来构建 API URL。每个构建器方法对应于可以添加到 API 请求的参数。
在上面的示例中,向请求中添加了三个参数:observation_start,units 和 frequency。 FRED API 文档 解释了每个端点可能使用的参数。必需参数(除 tag_names
参数外)传递给客户端函数本身。在示例中,series_id 是必需参数,并直接传递给客户端函数作为 "GNPCA"
。某些端点上的 tag_names
参数接受一个参数列表,因此更容易将此参数传递给构建器。
API 密钥
开发者需要申请API密钥以访问FRED。这可以在以下网址完成:https://research.stlouisfed.org/docs/api/api_key.html。
fred-rs默认会查找FRED_API_KEY
环境变量。您可以使用以下Bash命令设置此变量。
export FRED_API_KEY=abcdefghijklmnopqrstuvwxyz123456
或者,FredClient.with_key()
函数允许从字符串引用中设置密钥。
use fred_rs::client::FredClient;
let mut client = match FredClient::new() {
Ok(c) => c,
Err(msg) => {
println!("{}", msg);
return
},
};
client.with_key("abcdefghijklmnopqrstuvwxyz123456");
问题/错误/改进/帮助/疑问
如果您发现任何问题或错误,想提出任何改进意见,或者对crate有疑问,请随意在GitHub上创建一个问题,或者直接通过电子邮件联系我,邮箱地址为:[email protected],邮件主题中包含fred-rs。
许可证
您可以选择以下任何一个许可证:Apache许可证,版本2.0 或 MIT许可证。除非您明确说明,否则您有意提交以包含在此crate中的任何贡献,根据Apache-2.0许可证的定义,将按上述方式双重许可,无需任何额外条款或条件。
依赖关系
~3–7.5MB
~170K SLoC