22|Web开发(下):如何实现一个Todo List应用?
基本步骤
第五步:解析 Post 请求参数
- 深入了解
- 翻译
- 解释
- 总结
Axum是一个强大而灵活的Web框架,本文详细介绍了如何使用Axum进行Rust语言的Web后端开发。重点讲解了处理Post请求并获取参数的方法,包括解析表单数据和处理Json格式的Post请求参数。此外,还介绍了Axum提供的Rejection机制和自定义Extractor的方法。文章通过简洁清晰的示例代码和详细解释,帮助读者快速了解了Axum框架的Web开发特点和灵活性。内容还涵盖了全局404 Fallback、模板渲染、使用连接池连接PostgreSQL DB等内容,为读者提供了全面的开发指南。总的来说,本文适合想要学习如何使用Axum框架进行Web开发的读者,内容丰富、实用性强。文章还提到了测试后端服务的几种方式,以及对Axum Handler中多个参数顺序的影响,为读者提供了更多思考和探索的空间。
《Rust 语言从入门到实战》,新⼈⾸单¥59
全部留言(9)
- 最新
- 精选
- 小虎子🐯置顶因为刚刚更新了版本,文字内容有调整,所以需要一些时间处理音频,所以今天的音频中午发布哦2023-12-13归属地:北京1
- 天穹智能老师,请教一下axum开发web的包结构命名组织规范有没有相对比较正式点的,最近公司在用axum开发一个项目,一直在构思模块和包的结构组织。
作者回复: 你好,这个就按rust的规范命名就可以了。Rust的社区项目命名都比较一致的,这样大家都会比较习惯。目录组织的话,用 2015 风格 和 2018 风格的都有,另外,如果项目比较大,现在推荐使用 workspace:https://doc.rust-lang.org/cargo/reference/workspaces.html
2023-12-18归属地:上海22 - -我发现一个问题,就是同样的State,handler中我放第一个参数没问题,我放到Json参数后报错,希望老师协助分析下
作者回复: 非常棒的发现! Axum会对handler里面的解包器参数按顺序对Request进行处理。 如果你尝试将State放在Json解包器的后面,编译器会报错。这是因为Json解包器会消耗请求的主体(body),而在请求的主体被消耗之后,State就无法再从请求中提取数据(需要研究Axum内部的实现)。因此,你需要先使用State提取器,然后再使用Json解包器。详情见这里:⚠️ Since parsing JSON requires consuming the request body, the Json extractor must be last if there are multiple extractors in a handler. See “the order of extractors” https://docs.rs/axum/latest/axum/struct.Json.html 所以,Axum虽然说它的handler里面的参数顺序是声明式的(也就是可以随意换位置),但也不是对所有参数都平等对待。对于会消耗body的解包器,还是要注意一下其顺序。
2023-12-14归属地:北京22 - My dream怎么实现生成pdf文件,生成xls文档导入导出?生成word导出?
作者回复: https://crates.io/crates/xlsxwriter https://crates.io/crates/calamine https://crates.io/crates/docx-rs https://crates.io/crates/cairo-rs https://crates.io/crates/lopdf
2023-12-14归属地:四川1 - -Hedon🍭思考题:声明式参数,我个人觉得有一点“强类型”的味道,这要求把参数是什么明确表示出来,即利于代码的可读性,也有助于类型检查。 另外,想问一下老师,示例代码中数据库连接池通过 State 的方式来传递,这种方式跟声明全局变量相比有什么优劣呢?以及,如果我有多个对象需要共享,那怎么做呢?
作者回复: rust语言里面不推荐用全局变量,因为很不利于并发编程。实际state就可以扮演一全局变量的作用。多个元素就声明struct,都放一个struct里面管理起来就行。
2024-01-07归属地:湖北 - 不忘初心bb8 有mysql的crate吗? crates.io上没有找到哦
作者回复: bb8不支持mysql。你可以用 r2d2 https://github.com/sfackler/r2d2
2023-12-13归属地:四川 - 刘丹本文是用了 ORM 吗? 因为我们由于使用 ORM 这种东西,因此纯靠手动拼 sql 字符串
作者回复: 打错啦,由于 换成 没有,我给小编反馈。感谢感谢
2023-12-13归属地:广东 - 伯阳确实挺方便,天生支持MySQL么
作者回复: 支持的,有mysql驱动,用法基本一样
2023-12-13归属地:北京 - meteor请问下,rust有什么好用的表格组件吗,可以编译成wasm的。我们的网页需要一个高性能表格,想用rust开发,然后编译为wasm。目前看了egui,请问还有其他好用的库吗2024-03-07归属地:上海