• 2024-09-02第十九章 rust服务器开发:axum框架详解
    注意本系列文章已升级、转移至我的自建站点中,本章原文为:rust服务器开发:axum详解目录注意一、前言二、基本使用三、路由定义四、参数提取五、响应体六、共享状态七、中间件一、前言因为rust拥有着极高的性能,加上tokio这个非常优秀的运行时,这使得rust很
  • 2024-07-24rust axum sse
    Cargo.toml:[package]name="sse"version="0.1.0"edition="2021"[dependencies]axum="0.7.5"axum-extra={version="0.9.3",features=["typed-header"]}eventsource-stream="0.2
  • 2024-04-27Axum vs Actix vs Rocket
    Inthisarticle,wewillconductaperformancecomparisonofthreeofthemostpopularRustwebframeworks:Axum,Actix,andRocket.HowwearegoingtotestOneachframeworkwearegoingtoimplementsimpleWeb-servicewiththreeendpoints:POST/tes
  • 2024-02-06超简单!手把手实现axum简易中间件
    axum是Rust语言tokio生态中的重要一环,以轻量、模块化、易用而闻名于世。它的中间件系统集成自另一个叫tower的框架,这就意味着如果我们要写axum的中间件的话,就得了解一下这个tower的各个核心概念,并学习它的用法。但是,很多时候我们可能只是想写一点简单的小工具,为了小需求去学习一个
  • 2024-01-22socketioxide 基于rust 的socket.io server 实现
    socketioxide是基于rust的socket.ioserver实现包含的特性类似axum的API完全兼容官方socket.ioclient支持v4协议状态管理namespacesrooms消息确认polling以及websocket支持说明目前socketioxide实际上也支持adapter,支持是本地的,缺少集群模式的支持,比如nodej
  • 2024-01-13RUST web框架axum快速入门教程6之测试
    本文主要讨论axum的测试,axum对于测试的支持还是比较完善的,我们可以测试状态码,HTTP头信息,响应体等内容,因为框架实现的原因,其实axum很依赖tower。往期文章:https://youerning.top/post/axum/quickstart-1https://youerning.top/post/axum/quickstart-2https://youerning.top/pos
  • 2023-11-02axum 实现 Session
    由于HTTP是无状态的,所以我们可以通过cookie来维护状态。但cookie是直接保存到客户端,所以对于敏感数据,不能直接保存到cookie。我们可以把敏感数据保存到服务端,然后把对应的ID保存到cookie,这就是Session。本章我们将使用Cookie和 Redis 实现一个简单的Session。本章
  • 2023-11-02axum 集成 JWT
    Jsonwebtoken(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加
  • 2023-11-02axum中的各种响应
    本章主要讨论axum的响应。axum已经实现了多种响应,比如纯文本、HTML、JSON及自定义响应头(responseheader)。除了这些axum内置的响应之外,我们还将讨论如何将自己定义的结构体,作为响应返回给客户端。axum的响应axum有句话说的是:Anythingthatimplements IntoRespons
  • 2023-11-02在axum中获取请求数据
    在日常开发中,我们需要与用户进行交互,从各种渠道获取用户输入,包括但不限于:表单、URL参数、URLPath以及JSON等。axum为我们提供了这些获取用户输入的支持。获取 Path 参数Path 参数,又称为“路径参数”,它既可以实现参数的传递,又对SEO友好。什么是 Path 参数假设有以
  • 2023-11-02axum 操作 Postgres 数据库
    PostgreSQL是一款天然支持异步操作的高性能开源关系型数据库。本章将讨论如何在axum中使用PostgreSQL。包括:数据的增加、修改、删除、查找以及开始事务保证业务的原子性。如果你对PostgreSQL不是很了解,可以通过PostgreSQL轻松学网站进行学习。ElephantSQL提供了免费的Po
  • 2023-11-02axum处理cookie
    Cookie是通过HTTPHeader进行传递的。由某个响应头进行设置,然后其它请求头就可以获取到了。本章将通过模拟用户中心来用axum操作HTTPHeader演示Cookie的读写操作。本章示例将实现以下路由:路由说明GET/用户中心首页。如果用户未登录,显示提示信息;如果用户已登
  • 2023-11-02axum 操作 redis
    通过 redis-rs 这个crate,可以很方便的操作redis。它提供了同步和异步两种连接,由于我们要集成到axum中,所以这里使用异步连接。本章将展示如何获取redis异步连接、如何将字符串保存到redis、如何获取到保存在redis里的字符串以及如何通过redis保存和读取自定义结构体。
  • 2023-11-02axum处理静态文件
    和其它Web框架一样,axum也会对所有请求进行处理。对于CSS、JS及图片等静态文件,并不需要axum的handler进行处理,而是只需要简单的把它们的内容进行返回即可。axum提供了处理静态文件的中间件。首先,我们创建一个名为 static 的目录,并在其中创建一个 axum-rs.txt 的文
  • 2023-11-02路由
    axum提供了常用的HTTP请求方式对应的路由,比如 get, post, put, delete 等。除此之外,axum还提供了“嵌套路由”。路由,通常和 handler(处理函数) 结合在一起。handler 是什么通常理解,handler是指接收用户的请求,并将处理结果作为响应返回给用用户的函数。它的返回值
  • 2023-11-02中间件
    中间件是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。——摘自维基百科;在《axum的状态共享》中,我们已经用到了中间件:用于添加共享数据的 AddExtension 中间件——它应用于AddExtensio
  • 2023-11-02axum的状态共享
    状态共享是指,在整个应用或不同路由之间,共享一份数据。axum提供了方便的状态共享机制,但可能也会踩坑。本章将带你学习如何在axumweb应用中共享状态。如何进行状态共享axum使用 Layer 来实现状态共享。定义路由时,使用 layer() 加入要共享的数据,在需要获取该共享数据的
  • 2023-10-21使用axum构建博客系统 - 应用骨架
    本章我们将开始搭建本应用的骨架,包括:依赖、Result 和 AppError 以及通用数据库操作等。依赖#Cargo.toml[dependencies]tokio={version="1",features=["full"]}serde={version="1",features=["derive"]}axum="0.4"config="0.
  • 2023-10-21使用axum构建博客系统 - 模板
    我们的博客分为“前台”和“后台”两部分。前台用于展示博客内容,后台用于管理博客。本章我们将编写前台和后台的基础模板以及对应的路由。目录结构前台模板位于 templates/frontend,后台模板位于templates/backend。前台我们的前台模板基于 Bootstrap的Blog 修改而来布局
  • 2023-10-21使用axum构建博客系统 - 分类管理
    本章开始,我们将对博客的具体业务进行实现。首先,我们实现博客分类的管理功能。数据库结构CREATETABLEcategories(idSERIALPRIMARYKEY,nameVARCHAR(100)NOTNULL,is_delBOOLEANNOTNULLDEFAULTFALSE);字段说明id主键。唯一标识,自增长。name分
  • 2023-10-21使用axum构建博客系统 - 文章管理
    本章我们将实现博客的文章管理功能。数据库结构CREATETABLEtopics(idBIGSERIALPRIMARYKEY,titleVARCHAR(255)NOTNULL,category_idINTNOTNULL,summaryVARCHAR(255)NOTNULL,markdownVARCHARNOTNULL,htmlVARCHARNOTNULL,hitINTNOTNUL
  • 2023-10-21使用axum构建博客系统 - 后台管理菜单及首页模板
    目前,后台管理功能基本完成,但还有两个工作没做:清理后台管理的导航菜单以及后台管理首页的模板。后台管理菜单<!--templates/backend/base.html--><!--...--><divclass="container-fluid"><divclass="row"><navid="sidebarMenu"c
  • 2023-10-21 使用axum构建博客系统 - 鉴权与登录
    本章实现后台管理的鉴权,以及管理员的登录、注销功能。涉及的知识点有:cookie及中间件等。数据库结构CREATETABLEadmins(idSERIALPRIMARYKEY,emailVARCHAR(255)NOTNULL,passwordVARCHAR(255)NOTNULL,is_delBOOLEANNOTNULLDEFAULTFALSE);字段说
  • 2023-10-21使用axum构建博客系统 - 网站首页
    后台管理完成后,我们开始进入前台功能的开发。本章我们将完成博客首页的开发。母模板templates/frontend/base.html是时候对前台母模板进行数据填充和块的定义了:<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="utf-8"/><metaname="viewport"c
  • 2023-10-21使用axum构建博客系统 - 分类文章列表
    本章将实现博客的分类文章列表功能。模板请参见代码仓库的templates/frontend/topic_list.html视图类请参见代码仓库的src/view/frontend/topic.rshandler//src/handler/frontend/topic.rspubasyncfnlist(Extension(state):Extension<Arc<AppState>>,Path(