如何修复Rust Rocket框架中POST请求中的解析错误

如何修复Rust Rocket框架中POST请求中的解析错误,post,web-applications,rust-rocket,Post,Web Applications,Rust Rocket,我正在使用rust Rocket框架制作一个非常简单的web应用程序。我有一个非常简单的HTML文件,它有一个表单,如下所示: <form action="/search" method="post" accept-charset="utf-8"> Search Term:<input type="text" name="searchterm"> <input type="submit" value="search"> </form> 如

我正在使用rust Rocket框架制作一个非常简单的web应用程序。我有一个非常简单的HTML文件,它有一个表单,如下所示:

<form action="/search" method="post" accept-charset="utf-8">
  Search Term:<input type="text" name="searchterm">
  <input type="submit" value="search">
</form>

如果直接转到“localhost:8000/search/Hello!”我可以看到我的GET响应是有效的。但是如果我使用我的表单,它会拒绝解析。我做错了什么?我只是尝试制作一个web应用程序,它接受一个输入,并基于该输入返回一些东西。网站重定向,网页抓取,我还不确定具体的功能,但我需要能够在表单中键入一些内容,并获得它,以便稍后在我的代码中使用。任何帮助都将不胜感激

我认为问题在于表单参数名(
)与结构字段名(
有效负载
)不匹配。如果您重命名其中一个以便它们匹配,那么您的表单应该可以工作

#[derive(FromForm)]
pub struct Request<'r> {
  payload: &'r RawStr,
  //we can add more if we want later on, for other form options...
}

#[post("/search", data = "<data>")]
pub fn process(data: Form<Request>) -> Result<Redirect, String> {
  if data.payload == "Hello!" {
    Ok(Redirect::to("/search/Hello"))
  } else {
    Err(format!("Unknown search term, '{}'.", data.payload))
  }
}
#[get("/search/<term>")]
pub fn response(term: &RawStr) -> String {
  format!("You typed in {}.", term)
}
POST /search application/x-www-form-urlencoded:
=> Matched: POST /search (process)
=> Error: The incoming form failed to parse.
=> Outcome: Failure
=> Warning: Responding with 422 Unprocessable Entity catcher.
=> Response succeeded.