Skip to main content

响应

使用类似构建器的模式来构造 HttpResponse 实例。HttpResponse 提供了几种方法,这些方法返回一个 HttpResponseBuilder 实例,该实例实现了各种便捷的方法来构建响应。

查看 文档 了解类型描述。

方法 .body.finish.json 完成响应创建并返回构造好的 HttpResponse 实例。如果在同一个构建器实例上多次调用这些方法,构建器将会崩溃。


JSON 响应

Json 类型允许使用格式良好的 JSON 数据进行响应:只需返回类型为 Json<T> 的值,其中 T 是要序列化为 JSON 的结构类型。类型 T 必须实现 serdeSerialize 特性。

要使以下示例工作,您需要在 Cargo.toml 中添加 serde 到您的依赖项:

[dependencies]
serde = { version = "1.0", features = ["derive"] }

以这种方式使用 Json 类型而不是在 HttpResponse 上调用 .json 方法,可以立即清楚地表明该函数返回的是 JSON 而不是其他类型的响应。

内容编码

Actix Web 可以使用 Compress 中间件 自动压缩负载。支持以下编解码器:

  • Brotli
  • Gzip
  • Deflate
  • Identity

响应的 Content-Encoding 头默认设置为 ContentEncoding::Auto,它根据请求的 Accept-Encoding 头执行自动内容压缩协商。


通过将 Content-Encoding 设置为 Identity 值,可以显式禁用处理程序上的内容压缩:


在处理已经压缩的主体时(例如,提供预压缩的资产),手动设置响应上的 Content-Encoding 头以绕过中间件: