如何解决如何修改 actix-web 的查询提取器行为以处理大小写差异?
以下是 actix-web's docs 中关于如何将 Query
数据反序列化为结构体的示例:
use actix_web::{get,web,App,HttpServer};
use serde::Deserialize;
#[derive(Deserialize)]
struct Info {
username: String,}
// this handler gets called if the query deserializes into `Info` successfully
// otherwise a 400 Bad Request error response is returned
#[get("/")]
async fn index(info: web::Query<Info>) -> String {
format!("Welcome {}!",info.username)
}
当结构中的一种类型是枚举时,我试图让它工作:
#[derive(serde::Deserialize,serde::Serialize,Debug)]
struct TweetParams {
page: u32,timeframe: Timeframe,}
#[derive(serde::Deserialize,Debug)]
enum Timeframe {
Hour,Four,Day,Week,Month,}
但是,我收到以下错误:
[2021-06-01T15:15:47Z DEBUG actix_web::middleware::logger] Error in response: Deserialize(Error("unknown variant `popularity`,expected one of `Popularity`,`Retweets`,`Likes`,`Replies`,`Time`"))
显然它不能将“流行度”与“流行度”匹配。我想在后端修复错误,而不是在前端更改大小写。实现这一目标的最佳方法是什么?
我能想出的唯一选项是 writing a custom deserialization trait,作为初学者,这超出了我的想象。有没有其他更简单的方法来做到这一点,还是我应该咬紧牙关?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。