Rust
Platform API 토큰을 받으려면 REST 가이드부터 시작하세요. 이 예시는 reqwest 동기 클라이언트와 Serde를 사용합니다.
cargo new reconstruct-rest-client로 프로젝트를 만드세요. Cargo.toml에 다음 의존성을 추가하세요:
[dependencies]
reqwest = { version = "0.13", features = ["blocking", "json"] }
serde = { version = "1", features = ["derive"] }
urlencoding = "2"
다음 src/main.rs를 사용하세요:
use reqwest::blocking::Client;
use serde::Deserialize;
use std::env;
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
struct Catalog { catalog_id: String }
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
struct Page {
#[serde(default)]
catalogs: Vec<Catalog>,
next_page_token: Option<String>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
struct Detail { catalog_id: String, description: String }
fn main() -> Result<(), Box<dyn std::error::Error>> {
let token = env::var("CR_RECONSTRUCT_API_TOKEN")?;
let base = "https://reconstruct.dev/api/v1/platform";
let client = Client::new();
let page: Page = client.get(format!("{base}/catalogs?pageSize=10"))
.bearer_auth(&token).send()?.error_for_status()?.json()?;
for catalog in page.catalogs {
let url = format!("{base}/catalogs/{}", urlencoding::encode(&catalog.catalog_id));
let detail: Detail = client.get(url)
.bearer_auth(&token).send()?.error_for_status()?.json()?;
println!("{}: {}", detail.catalog_id, detail.description);
}
if let Some(next) = page.next_page_token {
println!("Next page token: {next}");
}
Ok(())
}
cargo run을 실행하세요. 다른 페이지를 얻으려면 nextPageToken을 URL 인코딩한 pageToken 쿼리 매개변수로 전달하세요.