【问题标题】:Trouble with POST declaration in Rust/RocketRust/Rocket 中的 POST 声明问题
【发布时间】:2020-06-05 00:00:06
【问题描述】:

我正在尝试用 Rocket 编写一个简单的 api 来帮助自己学习 rust,但在尝试声明 POST 路由后遇到了这个错误:

error: malformed attribute
  --> src/main.rs:26:1
   |
26 | #[post("/producers", format="application/json", data =<"prod">)]
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: expected syntax: #[post(key = value, ..)]

这是该路由的函数声明:

#[post("/producers", format="application/json", data =<"producer">)]
fn post_producer(producer: Json<Producer>) -> String {
    return("hello".to_string());
}

我正在导入这些宏:

#![feature(proc_macro_hygiene, decl_macro)]

#[macro_use] extern crate rocket;
#[macro_use] extern crate serde_derive;
#[macro_use] extern crate rocket_contrib;

use rocket_contrib::json::Json;

我为 GET 声明了另一种方法,但该方法工作正常。我做了一些研究,发现了这些示例和文档: https://api.rocket.rs/v0.4/rocket_codegen/attr.post.html https://rocket.rs/v0.4/guide/requests/#format

据我所知,我正在遵循这两页中提到的约定,我有点迷失从这里去哪里。是否有一些我缺少的语法或导入?

【问题讨论】:

  • 为什么&lt;"application/json"&gt;&lt;"prod"&gt;周围有尖括号?
  • 对参数有要求。 format 字段不是必需的,我会快速编辑它。

标签: rust rust-rocket


【解决方案1】:

根据文档,data参数必须在引号内有。所以data="&lt;prod&gt;" 应该可以解决这个问题。

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 2019-10-05
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多