use std::{io, collections::HashMap};
use reqwest::header::HeaderMap;
use serde::{Deserialize, Deserializer};

#[tokio::main]
async fn main() {
    match send_post().await {
        Ok(res) => {
            // 解析返回的 JSON 数据
            let data: Vec<Completion> = serde_json::Deserializer::from_str(&res)
                .into_iter()
                .map(|v| Completion::deserialize(v).unwrap())
                .collect();
            
            // 获取 completion 字段的值
            let completions: Vec<String> = data.iter().map(|c| c.completion.clone()).collect();
            println!('{:#?}', completions);
        }
        Err(e) => {
            eprintln!('{:?}', e)
        }
    }
}

// 表示一个 completion 对象
#[derive(Debug, Deserialize)]
struct Completion {
    #[serde(rename = 'completion')]
    completion: String,
}

async fn send_post() -> Result<String, reqwest::Error> {
    let client = reqwest::Client::new();
    let mut header = HeaderMap::new();
    header.insert('User-Agent',
                  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \
                  Chrome/110.0.0.0 Safari/537.36'.parse().expect('unsolve the userAgent header value.'),
    );
    header.insert('referer', 'https//www.covery.com'.parse().expect('unsolve the referer value.'));
    header.insert('sec-ch-ua', 'sec-ch-ua'.parse().expect('ms'));

    let mut data = HashMap::new();
    data.insert('prompt', 'hello');

    Ok(client.post('https://free-api.cveoy.com/v3/completions')
        .headers(header)
        .json(&data)
        .send()
        .await?
        .text()
        .await?)
}

注意:

  • 为了使用 serde 库,你需要在 Cargo.toml 文件中添加以下依赖项:
[dependencies]
serde = { version = '1.0', features = ['derive'] }
serde_json = '1.0'
  • 确保你的 API 接口返回的 JSON 数据格式是正确的,并且每个对象都包含 completion 字段。

这个代码示例演示了如何使用 Rust 中的 reqwest 库发送 POST 请求到 API 接口,并使用 serde 库解析返回的 JSON 数据,提取其中的 completion 字段。你可以根据你的实际情况修改代码,例如修改 API 接口地址、请求参数和数据解析方式。

Rust 使用 reqwest 发送 POST 请求并解析 JSON 数据

原文地址: https://www.cveoy.top/t/topic/lBNP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录