http_tool.rs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. use tracing::trace;
  2. use crate::response_base::ResponseData;
  3. #[derive(Clone)]
  4. pub struct RestTool {
  5. pub base_url: String
  6. }
  7. impl RestTool {
  8. pub fn new(base_url: String) -> RestTool {
  9. RestTool { base_url }
  10. }
  11. // pub async fn http_tool(&self, request_path: String, request_type: String, params: String, headers: HeaderMap) -> Result<ResponseData, reqwest::Error> {
  12. // let res_data: ResponseData;
  13. // /****请求接口与 地址*/
  14. // let url = format!("{}{}", self.base_url.to_string(), request_path);
  15. // let request_type = request_type.clone().to_uppercase();
  16. // let addrs_url = format!("{}?{}", url.clone(), RestTool::parse_params_to_str(params.clone()));
  17. // // let params_json: serde_json::Value = serde_json::from_str(&params).unwrap();
  18. // // trace!("url:{}",url);
  19. // // trace!("addrs_url:{}",url);
  20. // // trace!("params_json:{}",params_json);
  21. // // trace!("headers:{:?}",headers);
  22. //
  23. // let req = match request_type.as_str() {
  24. // "GET" => self.client.get(addrs_url.clone()).headers(headers),
  25. // "POST" => self.client.post(addrs_url.clone()).body(params).headers(headers),
  26. // "DELETE" => self.client.delete(addrs_url.clone()).headers(headers),
  27. // // "PUT" => self.client.put(url.clone()).json(&params),
  28. // _ => return Ok(ResponseData::error("".to_string(),format!("错误的请求类型:{}", request_type.clone()))), // 处理未知请求类型
  29. // };
  30. //
  31. // let response = req.send().await?;
  32. // if response.status().is_success() {
  33. // // 读取响应的内容
  34. // let body = response.text().await?;
  35. // // trace!("ok-----{}", body);
  36. // res_data = ResponseData::new("".to_string(),"200".to_string(), "success".to_string(), body);
  37. // } else {
  38. // let body = response.text().await?;
  39. // // trace!("error-----{}", body);
  40. // res_data = ResponseData::error("".to_string(),body.to_string())
  41. // }
  42. // Ok(res_data)
  43. // }
  44. //map数据转 get请求参数
  45. pub fn parse_params_to_str(parameters: String) -> String {
  46. let mut params_str = String::from("");
  47. let parsed_json: serde_json::Value = serde_json::from_str(&parameters).unwrap();
  48. if let Some(json_obj) = parsed_json.as_object() {
  49. for (key, value) in json_obj.iter() {
  50. let formatted_value = match value {
  51. serde_json::Value::String(s) => s.clone(),
  52. _ => value.to_string()
  53. };
  54. // trace!("Key: {}", key);
  55. // trace!("Value: {}", formatted_value);
  56. // let formatted_value = match value {
  57. // Value::String(s) => s.clone(),
  58. // _ => value.to_string()
  59. // };
  60. let str = format!("{}={}", key, formatted_value);
  61. let format_str = format!("{}{}{}", params_str, (if params_str.len() > 0 { "&" } else { "" }), str);
  62. params_str = format_str;
  63. }
  64. }
  65. trace!("---json-转字符串拼接:{}",params_str);
  66. params_str.to_string()
  67. }
  68. //res_data 解析
  69. pub fn res_data_analysis(result: Result<ResponseData, reqwest::Error>) -> ResponseData {
  70. match result {
  71. Ok(res_data) => {
  72. if res_data.code != "0" {
  73. res_data
  74. } else {
  75. let json_value= res_data.data;
  76. let code = json_value["code"].as_str().unwrap();
  77. let data = serde_json::to_string(&json_value["data"]).unwrap();
  78. let msg = json_value["msg"].as_str().unwrap();
  79. // //trace!("--解析成功----code:{}",code);
  80. // //trace!("--解析成功----data:{}",data);
  81. // //trace!("--解析成功----msg:{}",msg);
  82. let success = ResponseData::new("".to_string(),
  83. code.parse().unwrap(),
  84. msg.parse().unwrap(),
  85. data.parse().unwrap());
  86. success
  87. }
  88. }
  89. Err(err) => {
  90. let error = ResponseData::error("".to_string(),format!("json 解析失败:{}", err));
  91. error
  92. }
  93. }
  94. }
  95. }