1.RUST web框架axum快速入门教程2
RUST web框架axum快速入门教程2
在上一篇文章中,源码我们探讨了axum获取参数的源码方法。现在,源码我们将深入探讨axum如何构建响应内容。源码如果您对axum的源码请求参数处理还不够熟悉,可以查阅我之前的源码日利慧源码文章:youerning.top/post/axum...
常见的响应内容分为两类:HTML和JSON。它们对应的源码Content-Type分别是text/html和application/json。前者通常用于直接渲染前端页面,源码并常与模板引擎库(如askama)配合使用;后者主要用于接口开发,源码以便后端与各种前端都能兼容。源码
本文使用的源码依赖项包括:
HTML响应:
若只是返回静态内容,则显得较为无趣。源码通常情况下,源码我们会结合模板引擎来使用。源码
需要注意的源码是:askama默认模板位于当前目录的templates目录下,因此需要指定templates/目录前缀。
hello.html的胭脂水粉gotv源码内容如下:
使用curl请求的结果如下:
askama的模板语法与Jinja2的语法基本一致,但也会有一些不同之处,这主要是由其实现语言的特点所决定的。详细信息可以查看:djc.github.io/askama/te...
JSON响应:
以下是一些常用的代码示例:
json3到json4的结果相同,这里简单展示一下对应的请求和响应。
如果查看Json的源代码,会发现它只接受一个约束,即serde的Serialize trait。这是微商素材源码一个代表可序列化的trait,至于如何序列化,Json对象会负责处理。这里简单展示一下对应的源代码。
因此,一些数据库的model可以通过#[derive(Serialize)]来实现Serialize,这样就可以方便地将查询到的数据结果返回给前端。
状态码:
到目前为止,我们已经能够处理大部分的星辰奇缘源码 新宠响应,但还有一个问题尚未解决,那就是如何指定状态码。我们不可能总是将响应码设置为。默认情况下,如果只返回一个实现IntoResponse trait的对象,状态码都是。
axum当然会考虑到这种情况,因此我们可以返回一个元组而非返回单个对象。快手自动刷源码元组的第一个对象是状态码,下面是一个简单的例子。
这个例子比较简单,就不展示对应的请求和响应了。
静态文件:
到目前为止,我们已经解决了web开发中的多数响应相关的问题。那么,如何提供静态文件呢?例如,响应CSS、JS等静态资源文件。虽然Rust有一个强大的include_str宏,但手动实现这个功能还是显得有些无趣。因此,axum应该有相关的支持,或者说大多数web框架都支持这一点。不过,axum支持静态文件的方式与其他Rust web框架有所不同。
axum与其他Rust web框架的一个很大不同之处在于,它基于tokio和tower技术栈。也就是说,它可以从这两者那里继承很多优势,例如tower的中间件服务。这些中间件包括但不限于超时、重连、重试等。
tower是一个模块化和可复用的库,提供了一套很棒的请求-响应模型,可以用来开发健壮的网络客户端和服务端。
上面的例子就是将本地的templates目录映射到服务端的/templates。
小结:
除了本文提到的响应,axum其实还支持很多常用的响应类型,如Redirect、SSE等。这应该能够满足大部分需求。如果不行的话,可以自己实现IntoResponse。
参考链接:
原文链接:youerning.top/axum/quic...
2024-11-19 01:40
2024-11-19 01:14
2024-11-19 00:30
2024-11-19 00:18
2024-11-19 00:04
2024-11-18 23:46
2024-11-18 23:42
2024-11-18 22:59