Hi !
Yes, Iβm starting to use OpenAI services in with Rust. However, before getting here, I spent some time learning how to work with HTTP Requests in Rust.
There seems to be several libraries that can help. I found several examples using [https://docs.rs/reqwest/0.6.2/reqwest/], so I decided to use this one.
A classic example to do this, is to perform an HTTP GET request to the following url, to get our public IP Address.
https://httpbin.org/ip
And hey, the code is super simple
/* | |
Copyright (c) 2023 | |
Author : Bruno Capuano | |
Create Time : 2023 Feb | |
Change Log : | |
- Demo learning with HTTP GET and POST request with Rust | |
- Source Demo: https://actix.rs/docs/getting-started | |
The MIT License (MIT) | |
Permission is hereby granted, free of charge, to any person obtaining a copy | |
of this software and associated documentation files (the "Software"), to deal | |
in the Software without restriction, including without limitation the rights | |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
copies of the Software, and to permit persons to whom the Software is | |
furnished to do so, subject to the following conditions: | |
The above copyright notice and this permission notice shall be included in | |
all copies or substantial portions of the Software. | |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
THE SOFTWARE. | |
*/ | |
use reqwest; | |
use std::collections::HashMap; | |
#[tokio::main] | |
async fn main() -> Result<(), Box<dyn std::error::Error>> { | |
let client = reqwest::Client::builder().build()?; | |
let res = client.get("https://httpbin.org/ip") | |
.send() | |
.await?; | |
let ip = res.json::<HashMap<String, String>>().await?; | |
println!("{:#?}", ip); | |
Ok(()) | |
} |
With a more simple output
Finished dev [unoptimized + debuginfo] target(s) in 3.99s
Running `target\debug\result02.exe`
{
"origin": "111.111.111.111",
}
More about http calls in next posts!
Happy coding!
Greetings
El Bruno
More posts in my blog ElBruno.com.
Top comments (0)