#经济学 #API密钥 #金融 #API请求 #API绑定 #fred

fred-rs

访问圣路易斯联邦储备银行FRED API的接口

2个版本

0.1.1 2020年2月21日
0.1.0 2020年2月21日

#6 in #经济学

MIT/Apache

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 个来源的美国和国际时间序列数据",包括下面显示的失业率图表。

Unemployment Graph
美国劳工统计局,失业率 [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,但如果需要异步版本,可以探索。下面的图表显示了从应用程序角度的一般架构。

architecture

用法

下面是访问观测值或数据序列的一般用法的示例。

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.0MIT许可证
除非您明确说明,否则您有意提交以包含在此crate中的任何贡献,根据Apache-2.0许可证的定义,将按上述方式双重许可,无需任何额外条款或条件。

依赖关系

~3–7.5MB
~170K SLoC