摘要: 本章主要讨论 axum 的响应。axum 已经实现了多种响应,比如纯文本、HTML、JSON 及 自定义响应头(response header)。除了这些 axum 内置的响应之外,我们还将讨论如何将自己定义的结构体,作为响应返回给客户端。 axum 的响应 axum 有句话说的是: Anythin 阅读全文
posted @ 2023-11-02 09:51 CrossPython 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 在日常开发中,我们需要与用户进行交互,从各种渠道获取用户输入,包括但不限于:表单、URL 参数、URL Path 以及 JSON 等。axum 为我们提供了这些获取用户输入的支持。 获取 Path 参数 Path 参数,又称为“路径参数”,它既可以实现参数的传递,又对 SEO 友好。 什么是 Pat 阅读全文
posted @ 2023-11-02 09:50 CrossPython 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 状态共享是指,在整个应用或不同路由之间,共享一份数据。axum 提供了方便的状态共享机制,但可能也会踩坑。本章将带你学习如何在 axum web 应用中共享状态。 如何进行状态共享 axum 使用 Layer 来实现状态共享。 定义路由时,使用 layer() 加入要共享的数据,在需要获取该共享数据 阅读全文
posted @ 2023-11-02 09:50 CrossPython 阅读(258) 评论(0) 推荐(0) 编辑
摘要: axum 提供了常用的 HTTP 请求方式对应的路由,比如 get, post, put, delete 等。除此之外,axum 还提供了“嵌套路由”。路由,通常和 handler(处理函数) 结合在一起。 handler 是什么 通常理解,handler 是指接收用户的请求,并将处理结果作为响应返 阅读全文
posted @ 2023-11-02 09:49 CrossPython 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 中间件是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。 ——摘自维基百科; 在《axum 的状态共享》中,我们已经用到了中间件:用于添加共享数据的 AddExtension 中间件——它应用于AddExtensionLa 阅读全文
posted @ 2023-11-02 09:48 CrossPython 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 和其它 Web 框架一样,axum 也会对所有请求进行处理。对于 CSS、JS 及图片等静态文件,并不需要 axum 的 handler 进行处理,而是只需要简单的把它们的内容进行返回即可。axum 提供了处理静态文件的中间件。 首先,我们创建一个名为 static 的目录,并在其中创建一个 axu 阅读全文
posted @ 2023-11-02 09:48 CrossPython 阅读(358) 评论(0) 推荐(0) 编辑
摘要: Cookie 是通过 HTTP Header 进行传递的。由某个响应头进行设置,然后其它请求头就可以获取到了。本章将通过模拟用户中心来用 axum 操作 HTTP Header 演示 Cookie 的读写操作。 本章示例将实现以下路由: 路由说明 GET / 用户中心首页。如果用户未登录,显示提示信 阅读全文
posted @ 2023-11-02 09:47 CrossPython 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 通过 redis-rs 这个 crate,可以很方便的操作 redis。它提供了同步和异步两种连接,由于我们要集成到 axum 中,所以这里使用异步连接。本章将展示如何获取 redis 异步连接、如何将字符串保存到 redis、如何获取到保存在 redis 里的字符串以及如何通过 redis 保存和 阅读全文
posted @ 2023-11-02 09:46 CrossPython 阅读(98) 评论(0) 推荐(0) 编辑
摘要: PostgreSQL 是一款天然支持异步操作的高性能开源关系型数据库。本章将讨论如何在 axum 中使用 PostgreSQL。包括:数据的增加、修改、删除、查找以及开始事务保证业务的原子性。 如果你对 PostgreSQL 不是很了解,可以通过PostgreSQL 轻松学网站进行学习。 Eleph 阅读全文
posted @ 2023-11-02 09:46 CrossPython 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 由于 HTTP 是无状态的,所以我们可以通过cookie来维护状态。但 cookie 是直接保存到客户端,所以对于敏感数据,不能直接保存到 cookie。我们可以把敏感数据保存到服务端,然后把对应的 ID 保存到 cookie,这就是 Session。本章我们将使用 Cookie 和 Redis 实 阅读全文
posted @ 2023-11-02 09:44 CrossPython 阅读(121) 评论(0) 推荐(0) 编辑
摘要: Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于 JSON 的开发标准(RFC 7519),该 token 被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服 阅读全文
posted @ 2023-11-02 09:43 CrossPython 阅读(262) 评论(2) 推荐(0) 编辑
摘要: 利用模板引擎,我们不需要再把 HTML 代码写在 Rust 代码中了,而是将其独立保存为*.html文件。既方便维护,也有利用开发。 创建模板文件 首先,我们在项目根目录创建一个templates目录,并在这个目录创建一个index.html文件,内容如下: <!DOCTYPE html> <htm 阅读全文
posted @ 2023-11-02 09:43 CrossPython 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 文件上传是 Web 开发中常见的功能,本章将演示如何在 axum 实现文件上传。 启用 feature 要让 axum 支持文件上传,需要在 Cargo.toml 中显式的启用名为multipart的 feature: axum = {version = "0.3", features = ["mu 阅读全文
posted @ 2023-11-02 09:42 CrossPython 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 在机器人采集、恶意攻击的今天,人机验证筑起了一道保护网。从之前的图片验证码,到 Google 提供的 reCaptcha,人机验证经历了一段漫长的演进过程。 为什么使用 hCaptcha? Google 的 reCaptche 在国内无法访问,但 hCaptcha 可以 在开发层面 hCaptcha 阅读全文
posted @ 2023-11-02 09:41 CrossPython 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 将数据库连接信息、redis 连接信息以及 Web 应用监听地址等信息通过配置文件进行单独管理是一个比较好的开发实践。这样就无须在更改配置的时候重新编译整个项目,同时也可以针对不同环境使用不同的配置文件。 本章以 PostgreSQL 和 Redis 进行演示如何使用配置文件。首先看一下新接触的两个 阅读全文
posted @ 2023-11-02 09:40 CrossPython 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 本章主要讨论 axum 的错误处理。 最近TG 群很多朋友讨论到,在接收 JSON 数据时,如何对用户错误提交的数据回复自定义的信息。在axum 官方示例中,有一个通过自定义 extractor 的示例,同时axum 文档里有一篇专门介绍的错误处理的文档。 本章将简化官方的 extractor 以及 阅读全文
posted @ 2023-11-02 09:39 CrossPython 阅读(477) 评论(0) 推荐(0) 编辑
摘要: https://blog.csdn.net/xiaojin21cen/article/details/129767672 使用rust语言碰到linker `link.exe` not found | = note: program not foundnote: the msvc targe 运行 阅读全文
posted @ 2023-11-02 09:22 CrossPython 阅读(22) 评论(0) 推荐(0) 编辑