我用Rocket编写了一个简单的web服务,每当data
作为200响应出现时,它包含String
s的向量。当出现错误时,我希望有自定义错误。这些响应的结构应该是https://stackoverflow.com/a/23708903/4402306,具体来说是:
成功响应:
{
"data": {
"topics": ["topic1", "topic2", ...]
}
}
和错误:
{
"error": {
"status_code": 404,
"message": "not found (or any other custom error)"
}
}
对于错误,我在火箭中使用catcher
与实现我自己的错误结构(如枚举(带有火箭派生))的混淆:
#[derive(Serialize, Deserialize, Responder)]
#[response(content_type = "json")]
pub enum APIError{
CustomError1(String, #[response(ignore)] String),
CustomError2(String, #[response(ignore)] String),
...
}
那么我应该用什么来实现我的目标呢?
我也不确定如何表示成功的情况下(因为与rocket
,第一个字段应该实现Responder
特性,但我有一个Vec<String>
那里)
#[derive(Serialize, Deserialize, Responder)]
#[response(content_type = "json")]
pub struct Data {
topics: Vec<String>,
}
最后,我想我还需要将Data
和APIError
组合在一个Response
结构中-但是我不清楚如何控制何时返回什么。
感谢您的帮助。
您可以注册一个返回自定义消息的自定义Catcher
。看到这个。