Rust / Rocket中的POST声明有问题

问题描述 投票:0回答:1

[我正在尝试用火箭编写一个简单的api来帮助自己学习生锈,但是在尝试声明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.htmlhttps://rocket.rs/v0.4/guide/requests/#format

据我所知,我遵循这两个页面中提到的约定,但我对从这里走到哪里感到迷茫。我缺少语法或导入内容吗?

rust rust-rocket
1个回答
0
投票

根据文档,data参数必须在引号内包含<>。因此,data="<prod>"应该解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.