Open suren-m opened 2 years ago
Github API requires user-agent-header and without it, it returns a 403 reponse, ultimately resulting in vague decoding errors that could be difficult to debug for trying out the examples.
user-agent-header
403
For instance, the code snippet in https://rust-lang-nursery.github.io/rust-cookbook/web/clients/apis.html#query-the-github-api results in following error.
https://api.github.com/repos/rust-lang-nursery/rust-cookbook/stargazers [web-api-client/src/bin/web-api-client.rs:19] &response = Response { url: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some( Domain( "api.github.com", ), ), port: None, path: "/repos/rust-lang-nursery/rust-cookbook/stargazers", query: None, fragment: None, }, status: 403, headers: { "cache-control": "no-cache", "content-type": "text/html; charset=utf-8", "strict-transport-security": "max-age=31536000", "x-content-type-options": "nosniff", "x-frame-options": "deny", "x-xss-protection": "0", "content-security-policy": "default-src 'none'; style-src 'unsafe-inline'", "connection": "close", }, } Error: reqwest::Error { kind: Decode, source: Error("expected value", line: 2, column: 1) }
One of the fixes for above is to use reqwest client and pass in user-agent-header along with the request such as below.
reqwest client
// ref: https://stackoverflow.com/questions/47911513/how-do-i-set-the-request-headers-using-reqwest use reqwest::header::USER_AGENT; let client = reqwest::Client::new(); let response = client .get(request_url) .header(USER_AGENT, "rust web-api-client demo") .send() .await?;
Related: https://github.com/seanmonstar/reqwest/issues/1516
Github API requires
user-agent-header
and without it, it returns a403
reponse, ultimately resulting in vague decoding errors that could be difficult to debug for trying out the examples.For instance, the code snippet in https://rust-lang-nursery.github.io/rust-cookbook/web/clients/apis.html#query-the-github-api results in following error.
403 due to missing user-agent-header
Solution:
One of the fixes for above is to use
reqwest client
and pass inuser-agent-header
along with the request such as below.Related: https://github.com/seanmonstar/reqwest/issues/1516