当前位置: 首页 > 知识库问答 >
问题:

如何使用Rocket(Rust)获得此响应JSON结构

冷越泽
2023-03-14

我用Rocket编写了一个简单的web服务,每当数据作为200响应出现时,它都包含一个字符串向量。当出现错误时,我希望有自定义错误。我想对这些反应施加的结构应该如下所示https://stackoverflow.com/a/23708903/4402306,具体而言:

对于成功的响应:

{
  "data": {
    "topics": ["topic1", "topic2", ...]
  }
}

对于错误:

{
  "error": {
    "status_code": 404,
    "message": "not found (or any other custom error)"
  }
}

对于错误,我混淆了在火箭中使用捕手与实现我自己的错误结构,如枚举(使用火箭派生):

#[derive(Serialize, Deserialize, Responder)]
#[response(content_type = "json")]
pub enum APIError{
  CustomError1(String, #[response(ignore)] String),
  CustomError2(String, #[response(ignore)] String),
  ...
}

那么我应该用什么来实现我的目标呢?

我也不知道如何表示成功的案例(因为使用火箭,第一个字段应该实现响应者特征,但我有一个Vec

#[derive(Serialize, Deserialize, Responder)]
#[response(content_type = "json")]
pub struct Data {
  topics: Vec<String>,
}

最后,我认为我还需要在一个响应结构中组合数据和APIRERROR,但我不清楚如何控制何时返回什么。

协助将不胜感激。


共有1个答案

梁学真
2023-03-14

您可以注册一个返回自定义消息的自定义捕获器。看看这个。

 类似资料:
  • 如何将此Json响应转换为改装bean我得到了Gson错误,就像使用JsonReader一样。setLenient(true)在第1行第1列路径接受格式错误的JSON$ api调用为 字符串CATEGORY\u API=“”https://api.callingservice.com"; 请帮助我解决这个问题,如何将Json响应转换为Bean,我的Bean类如下

  • 问题内容: 我有一个特定的Web服务,期望将JSON作为发布内容,并将向后吐出XML。我正在对所有网络通话使用Retrofit。这是我使用XML转换器设置Retrofit适配器的方式: 如您所见,我没有使用Gson转换器。我如何设法发布任何JSON?谢谢! 问题答案: 创建自定义。这将使用不同的转换器进行序列化和反序列化。 用法:

  • 我试图从Web读取JSON数据,但该代码返回空结果。我不确定我做错了什么。

  • 我可以成功地将用户数据发送到服务器,但是我很难从服务器获得响应(用户注册)。请查看我的代码,并告诉我,如何获得Json响应(用户注册)。我已经尝试使用布尔和字符串类型的Asynctask来获得响应。但是在这里我将字符串保持为空。请告诉我如何获得Json响应。提前感谢!!! }

  • 问题内容: 我想拥有一个独立的PHP类,在这里我想拥有一个通过cURL调用API并获取响应的函数。有人可以帮我吗? 谢谢。 问题答案: 只需使用下面的代码即可获得来自宁静的Web服务URL的响应,而我使用的是社交提及URL。

  • 问题内容: 我想知道如何使用XMLHttpRequest加载远程URL的内容,并将所访问站点的HTML存储在JS变量中。 说,如果我想加载并Alert()的HTML,我该怎么做? 问题答案: 您可以在等于时得到它。 这是一个示例(与IE6 / 7不兼容)。 为了获得更好的跨浏览器兼容性,不仅可以与IE6/7兼容,而且还可以解决某些浏览器特定的内存泄漏或错误,并且为了降低触发Ajaxical请求的冗