Rust 实战
文章平均质量分 78
欢迎来到我的Rust新手实战专栏!
本专栏的内容每周会更新2到3篇,欢迎大家关注。
在这个专栏中,我将与大家分享Rust开发中的实际问题、深入分析Rust的技术以及介绍Rust生态中各种库的使用方法和最佳实践。
无论你是初学者还是有经验的Rust开发者,这个专栏都将为你提供有价值的内容。
涵树_fx
技术与智慧并行不悖,用行动来思考。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在AI编程时代,了解CSRF
摘要:AI编程时代的CSRF防御实践 在编程智能体普及的时代,基础安全漏洞CSRF(跨站请求伪造)仍需高度重视。本文以简历智能体项目为例,展示了多层CSRF防御体系: SameSite Cookie:严格限制Cookie仅限同站请求 Cookie签名:HMAC-SHA256防篡改 请求验证中间件:检查用户会话有效性 速率限制:防止暴力攻击 输入过滤:防御XSS注入 动态密钥:关键操作二次验证 这些措施通过破坏CSRF攻击的三个必要条件(有效会话、可构造请求、无来源校验),构建了纵深防御体系。原创 2026-06-05 11:47:10 · 248 阅读 · 0 评论 -
Rust实战:如何利用 mpsc 通道构建无阻塞的多线程应用
本文面向中级开发者,深入探讨了在 Rust 项目中如何利用 `std::sync::mpsc` 通道实现多线程通信以避免 UI 阻塞。文章结合实际代码,详细解析了命令执行结果回传、文件监控事件流处理两个核心场景。重点阐述了 `try_recv` 的非阻塞机制与 GUI 事件循环的配合原理,以及 `mpsc` 基于内存队列的所有权转移模型。通过“消息传递”架构,开发者可以构建出高效、解耦且响应迅速的应用程序。原创 2026-02-24 16:32:23 · 1015 阅读 · 0 评论 -
一次探索:当我的AI编程智能体成为“数字僚机”
本文分享了作者利用自研AI编程智能体“cli_coder”完成“简历智能体”全栈项目开发的初步探索。通过将20余年的架构经验与AI能力结合,作者尝试了一种从“局部辅助”到“全局驱动”的新工作流,90%以上的代码由AI生成,个人开发效率得到显著提升。文章旨在坦诚地分享这一尚在早期阶段的实践,并寻求拥有产品、市场或运营能力的伙伴,共同探索如何将这种技术能力转化为实际的商业价值。原创 2026-01-21 10:20:07 · 494 阅读 · 0 评论 -
配置加载陷阱:从 config crate 踩坑到 dumbo-config 最佳实践
本文复盘了在 Resume Agent 项目中遇到的配置加载问题,深入分析了 `config` crate 中 `with_prefix()` 和 `separator()` 的正确使用方法。通过对比原生实现的复杂性和 `dumbo-config` 库的简洁性,展示了如何通过封装最佳实践来避免配置加载陷阱。`dumbo-config` 提供了安全的默认分隔符、自动日志记录、内置调试支持等特性,让配置加载变得简单可靠。项目已开源,可通过 `cargo add dumbo-config` 安装使用。原创 2026-01-16 17:23:04 · 795 阅读 · 0 评论 -
搞懂 Rust 中的 RefCell:从 Actix Web 崩溃到“内部可变性“的正确打开方式
本文通过一个真实的 Actix Web 集成测试崩溃案例(`BorrowMutError`),深入浅出地讲解 Rust 中 `RefCell` 的设计动机、工作机制和典型应用场景。文章首先回顾 Rust 的基本借用规则,引出“共享不可变但需修改”的矛盾,进而介绍“内部可变性”这一 Rust 特有模式。通过 Actix Web 的 `Extensions` 和树形结构双向引用两个实例,展示 `RefCell` 的实用价值。最后,结合错误分析,总结使用 `RefCell` 的三大最佳实践:最小化借用生命周期、使原创 2026-01-14 20:59:36 · 604 阅读 · 0 评论 -
分形生成实验(六):数据建模--AI 协同编程中被低估的“契约”
本文基于作者在使用自研编程智能体 cli_coder 开发 Rust 项目时的实践,探讨数据建模在 AI 协同编程中的关键作用。作者指出,清晰的领域数据模型(如 Rust 中的 enum 和 struct)可作为人与大模型之间的“显式契约”,有效提升意图传达的准确性与代码生成的一致性。文章通过 `AnalysisRequest` 模型的演进案例,说明即使在强类型系统下,**模型设计的精准度仍直接影响 AI 的理解能力**,并强调:以数据模型为中心的协作方式,可能是当前“vibe coding”理念的一种..原创 2026-01-13 18:40:31 · 704 阅读 · 0 评论 -
分形生成实验(五):人机协同破局--30万token揭示Actix-web状态管理的微妙边界
本文记录了一次高效的2天调试经历:在阿里qwen3-max驱动的编程智能体cli_coder协助下,通过10轮完整分析(消耗30w+ token),成功定位并修复了一个actix-web middleware中的状态不一致问题。关键突破在于cli_coder建议添加`RUST_BACKTRACE=1`获得完整错误信息,并在人类引导下通过日志缩小范围,最终由cli_coder通过系统性穷举发现"统一返回路径"的解决方案。这个案例展示了AI在挫折面前的无感穷举能力如何与人类策略形成互补,也揭示了Web框架内部状原创 2026-01-12 16:22:02 · 741 阅读 · 0 评论 -
分形生成实验(四):超越编译器——构建AI生成代码的行为验收闸门
本文是“分形生成实验”系列的延续,反思了仅依赖Rust编译器作为契约守卫者的局限性。当AI主导生成完整项目框架后,“编译通过”虽保证了静态类型一致性,却无法确保业务逻辑的完整性与可验证性。作者通过两个典型问题(单元测试Mock缺失、关键函数未被调用)揭示了动态行为契约的真空,并提出在现有项目中可立即尝试的运行时验收方案:定义最小可验收场景(MAS)、采用“契约即测试”模式、引入静态分析工具链。这些探索旨在构建一道超越编译器的“行为验证闸门”,为AI协作开发提供更可靠的验收范式。原创 2026-01-06 23:06:22 · 599 阅读 · 0 评论 -
分形生成实验(三):Rust强类型驱动的后端分步实现与编译时契约
本文是“分形生成实验”系列的第三篇,聚焦后端API的实现过程。在延续“API合约驱动”思想的基础上,我们通过Rust的强类型系统,将详细设计文档转化为可编译的分步实现。文章展示了如何以“编译通过”作为每个阶段的完成标志,并通过一个典型的模块路径类型不匹配案例,揭示了Rust类型系统如何强制AI生成的代码严格遵守预设契约。这证明了:在清晰的类型定义下,分层逐步搭建的后端架构也能成为可靠的“分形单元”,而编译器正是保障全局一致性的终极守卫者。本文仅验证至编译通过阶段,运行时正确性将在后续实验中验证。原创 2026-01-04 22:30:17 · 952 阅读 · 0 评论 -
从“AI之友”到“cli_coder”:一个架构师的编程智能体实践与合作邀约
《从AI之友到cli_coder:一个架构师的智能编程工具演进之路》摘要(148字): 作者分享其命令行工具开发历程,从早期"AI之友"解决对话碎片化问题,到重构为注重架构设计的cli_coder。新工具以"Action"机制为核心,通过透明化文件读写等操作,使AI成为可追溯的编程协作者。目前正通过自研"简历智能体"验证工具实用性,采用"用工具造工具"的闭环开发模式。作者寻求合作伙伴,将cli_coder应用于实际开发场景,共同原创 2025-12-26 10:04:18 · 906 阅读 · 0 评论 -
安全重构的艺术:用小而可验证的步骤演进 Rust 代码
安全的重构不是一蹴而就的魔术,而是一系列小的、受控的、可验证的步骤。Rust 的语言特性让我们能更自信地迈出每一步,但方法论才是核心。下次当你面对一个“又长又乱”的函数时,不要想着“重写它”,而是问自己:“我能做的最小、最安全的下一步是什么?提取一个私有函数,保持外部行为不变,然后写一个测试。这样,你不仅在改进代码,也在构建一种可持续演进的工程文化。附:本文示例代码可在GitHub查看完整可运行版本(略)。实际项目中建议结合cargo test和进行持续验证。原创 2025-11-22 21:13:15 · 1010 阅读 · 0 评论 -
管道的设计与AI应用开发
本文探讨了管道设计在AI应用开发中的应用价值。首先分析了管道设计的基本原理,指出数据流本质上是数据类型的转换过程。然后讨论了AI数据的特点,特别是文本处理中的语义转换挑战。文章强调将管道设计应用于AI开发可带来模块化、可维护性等优势。最后通过思想实验提出,管道循环连接模拟人类循环思考模式,启示可设计具有自反性的AI系统。管道设计这一经典软件工程模式,将在AI时代发挥重要作用。原创 2025-11-17 09:21:56 · 432 阅读 · 0 评论 -
Rust中使用RocksDB索引进行高效范围查询的实践指南
本文深入探讨了在Rust中利用RocksDB实现高效范围查询的实践方法。通过分析适合范围查询的索引特点(有序性、可遍历性等),介绍了键的设计原则(字典序、前缀补零等)和迭代器的工程实践。文章详细讲解了RocksDB磁盘跳表实现原理与搜索流程,并提供了从指定范围起点查询的Rust代码示例。最后给出性能优化建议,包括合理设置prefix_extractor、使用Column Family隔离数据以及定期执行compact_range等。这些技术能帮助开发者在处理海量数据时实现高效的范围查询能力。原创 2025-09-04 16:53:55 · 900 阅读 · 0 评论 -
从Spark/Flink到WASM:流式处理框架的演进与未来展望
本文对比分析了传统流处理框架(如Spark/Flink)和新兴WASM方案的差异,探讨了技术选型的关键因素。通过性能测试数据、架构对比和实际案例,揭示流处理技术从集群调度到边缘计算的演进路径。(关键词:流式计算、WASM、性能优化、边缘计算)原创 2025-07-27 10:08:37 · 1258 阅读 · 0 评论 -
ZeroMQ中的REQ/REP模式:分布式系统的同步调用之道
本文深入剖析了ZeroMQ中REQ/REP通信模式的本质特性与实用技巧。不同于传统RPC,REQ/REP通过严格的锁步通信机制(REQ必须send→recv,REP必须recv→send)保证了基础的请求-响应语义。文章对比了本地调用、传统RPC与REQ/REP的核心差异,强调分布式环境下必须显式处理网络延迟、消息顺序和错误恢复等特性。通过Rust实现示例,详细讲解了rcvhwm、sndtmo等关键参数的调优策略及其在不同场景(微服务、物联网、金融系统)下的最佳实践。原创 2025-07-18 20:33:18 · 1558 阅读 · 0 评论 -
日志采集——ZeroMQ的配置
本文深入探讨了ZeroMQ在分布式日志采集系统中的关键作用。通过分析消息队列的五大核心要素(缓存、水位线、超时、丢弃策略和Linger机制),揭示了ZeroMQ如何解决日志突发流量、生产消费解耦等典型问题。文章提供了基于Rust的ZeroMQ配置示例,包括缓冲区设置、高水位线调整和超时控制等关键参数,并针对不同场景(高吞吐、低延迟、高可靠性)给出了优化建议。最后指出,通过合理配置ZeroMQ参数,可以构建一个既轻量级又高性能的日志采集管道。原创 2025-07-17 16:27:55 · 1186 阅读 · 0 评论 -
Rust单例模式:OnceLock的使用指南
告别单例模式的锁焦虑!Rust的`OnceLock`像轻巧的守门人,用原子操作解决初始化竞态,无需`Arc`的沉重。更惊艳的是编译期的`Send+Sync`机制:当多个线程通过`get_instance()`访问数据库连接时,Rust编译器会严格检查对象是否满足线程安全约束——就像给每个共享对象颁发"跨线程通行证"。对比Java/C#的运行时锁,Rust在编译期就捕获线程安全问题,零成本抽象+错误前置的设计,让机器替你熬夜排查错误。单例模式从未如此优雅安全!原创 2025-07-07 18:58:37 · 1451 阅读 · 0 评论 -
RocksDB深度指南:从LSM树原理到时序键优化
为什么选择RocksDB做配置存储?它比文件更可靠(原子写入/无锁读取),比数据库更轻量(嵌入式进程内运行)。本文带你穿透核心机制:- **LSM树魔法**:MemTable+SSTable+WAL如何实现高吞吐写入- **三放大困境**:写/读/空间放大的精妙平衡术- **键排序实战**:时序场景下100倍查询加速的密钥- **嵌入式优势**:告别独立数据库,拥抱低延迟数据处理无论存储配置还是时序数据,一文掌握RocksDB的高效之道!原创 2025-07-04 17:30:45 · 1078 阅读 · 0 评论 -
跨平台ZeroMQ:在Rust中使用zmq库的完整指南
当你需要轻量级、高性能的进程间通信时,ZeroMQ就像代码世界里的瑞士军刀。今天我们一起探索如何在Rust生态中使用这把利器,感受它如何在不同操作系统间架起通信的桥梁。就像搭建乐高积木,用zmq crate可以组合出各种通信模式。这种架构的精妙之处在于彻底解耦了数据生产者和消费者——发布者无需知道谁在接收,订阅者也不必关心消息来源,双方如同独立运转的齿轮,通过ZeroMQ的管道默契协作。原创 2025-07-04 10:28:54 · 690 阅读 · 0 评论 -
ZeroMQ的工作原理解读
ZeroMQ是一个智能消息传输层,抽象了传统socket编程的底层细节,提供高级消息模式。它自动处理消息传递,支持多种通信模式:请求-回复模式(REQ-REP)实现同步RPC调用,发布-订阅模式(PUB-SUB)支持一对多广播,管道模式(PUSH-PULL)适合并行任务分发。这些模式通过简单API实现组件解耦,开发者无需关注通信细节即可构建分布式系统。ZeroMQ高效处理消息序列化、路由和重试,使系统组件可替换如积木,是构建现代分布式架构的理想中间件选择。原创 2025-07-03 15:02:01 · 605 阅读 · 0 评论 -
Rust中的交叉编译与vendered特性
Rust 语言在跨平台开发中,尤其是交叉编译时,常面临依赖问题。vendored 特性作为 Cargo 生态系统中的工具,能够有效解决这些问题,特别是在处理系统库如 OpenSSL 时。vendored 特性通过将依赖库打包到项目中,避免了对外部系统库的依赖,从而解决了交叉编译中的兼容性和版本一致性问题。例如,在 macOS 上交叉编译 Linux 目标时,启用 vendored 特性后,openssl crate 会从源代码编译 OpenSSL 并静态链接到项目中,避免了 OpenSSL 库找不到的问题。原创 2025-05-15 10:17:21 · 932 阅读 · 0 评论 -
一次Postgres的实体表重构经历
通过这次实践,我深刻体会到了数据库实体表重构的重要性和挑战性。这个过程要谨慎操作,步步为营,多做接近于用户场景的测试,一定不要造成数据丢失(注意,是一定不要,因为一旦造成数据丢失,不但造成的影响很大,找回数据的成本也是很高昂的)。每一次困境,对我们来说都是一次成长的机会,这次也不会例外。2024.3.31重庆,渝北。原创 2024-03-31 18:32:24 · 739 阅读 · 0 评论 -
在Rust中,探索word到pdf的转换
docx库通常虽然提供了一些抽象层,使得开发者可以在不了解Word文档内部复杂结构的情况下,也能读取和修改文档的基本内容,但是,如果我们需要处理更复杂的任务,比如修改特定样式的文本、处理文档的页眉页脚、或者处理文档的元数据等,那么对Word文档的内部结构有更深入的了解就会非常有帮助。别忘了,我们是要挑战这万分之几的出错率,对word文档的了解,应该是必须的。word到pdf的转换看起来已经成熟,但是在特定的业务场景下,现有的转换仍然有万分之几的出错率,这个数字,在苛刻的商业环境下,也是不能接受的。原创 2024-03-13 22:23:49 · 2339 阅读 · 0 评论 -
重构笔记系统:Docker Compose在微服务架构中的应用与优化
在我的笔记系统中,我使用Docker Compose将各个微服务编排在一起,形成了一个完整的应用程序。优化是一个持续的过程,我将继续关注最佳实践和技术发展,以进一步提升系统的稳定性、性能和安全性。的开发是基于微服务的思想,但是在服务的配置和编排上感觉还是不太合理,具体来说,在开发上的配置和在生产上的配置差别太大。因此,我在周末重构了项目结构和docker-compose.yml,本文将分享我在这一过程中的经验,并探讨如何进一步优化基于Docker Compose的微服务架构。请关注我,不要错过更新哟。原创 2024-03-04 08:52:13 · 1201 阅读 · 0 评论 -
Rust-AI todo list 开发体验
如果你稍微留意一下todo list v0.0.3的代码,你会发现它是比较臃肿的,因为,这个版本只是通过组装AI写出来的代码,完成了功能的开发。说“能”,我想不用我说,很早就有人用AI生成正则表达式的相关功能代码,从这个角度来说,AI 已经替代了程序员的工作了。原创 2024-02-07 16:39:08 · 1773 阅读 · 0 评论 -
又聊代码重构
只有开发者对代码的不断觉察和理解,才会产生重构代码的念头。因此,驱动重构的应该是开发者本身的认知,而不是线上产品的反馈或者测试的反馈。以上面的代码为例,对属性名称的重构/修改,也是基于对代码的察觉。之前的命名在当前的业务理解上下文中过于模糊,甚至还有歧义。导致这种现象的原因并不是因为我之前对这些属性的命名过于草率,而是因为之前我还没确定生成的代码中要使用vue的mixins技术。为什么我要用觉知这个词呢,因为就算我不修改上面的命名,就现阶段来说,代码也是能够正确运行的。原创 2024-01-19 23:17:26 · 541 阅读 · 3 评论 -
staging-数据管道-处理原则的体验
在数据管道中,staging指的是将数据从源系统移动到目标系统之前的中间步骤。在staging过程中,数据会经过一系列的转换和处理,以确保数据的质量和准确性。staging可以包括数据清洗、格式转换、数据合并等操作,以便最终将数据加载到目标系统中。这里面既有函数式编程的思路,也有系统数据流分析的影子。而今天在这个项目的代码重构中,再次体验到了这个原则。实际上,在我之前设计的bisheng-cli的项目中也成功使用了这个原则,只是现在对这个原则的体验更加强烈。原创 2024-01-17 17:43:19 · 567 阅读 · 0 评论 -
AI协助编程在Rust学习中的个人体验
我说的体验感不好,不是在于AI的回答结果的正确率,而在于我发现我问过多次类似于“Rust中如何使用正则表达式”之类的问题。这也是我不断向我的开源项目。虽然AI在编程中涉及的方面有很多,但我在Rust的学习和使用中,主要通过AI来生成代码,因此,我的体验也主要围绕代码的生成和使用上来阐述。当前AI在编程开发方面的使用越来越广泛,我在Rust的学习中,也刻意加重了对AI的使用。在代码的生成上,随着使用的深入,我提的问题逐渐从之前的偏重功能到偏逻辑。当然,这只是我的个人想法,我也真诚的接受各位大神的意见和建议。原创 2024-01-16 08:49:59 · 1006 阅读 · 0 评论 -
Rust-模式匹配:简洁、可读,完备
我使用Rust开发将近一年了,每次我读到Rust的核心概念中包含了“模式匹配”时,心里就会不由冷笑,因为我对模式匹配的理解仅限于对枚举值,Result和Option的简单处理,没有觉得它有好高级的地方。但是,最近AI给我提供的一个Rust的例子代码,着实把我惊艳到了。原创 2024-01-14 11:01:42 · 684 阅读 · 0 评论 -
笔记系统的部署架构
一个简单的全栈功能闭环基本完成。既然是开源,因此,这里有必要分享一下部署结构,希望能够获得小伙伴们的反馈。后期还会增加其它服务来实现笔记数据的处理。欢迎大家评论区讨论。note_book_api: 负责笔记系统数据处理的后端应用。api-gate: 负责路由和访问权限验证的后端应用。目前整个系统采用docker容器来部署。auth2: 负责用户登录和注册的后端应用。auth_app: 登录/注册的前端应用。web_app: 笔记系统的前端应用。请关注我,不要错过更新哟。原创 2024-01-12 08:58:18 · 721 阅读 · 0 评论 -
使用git submodule解决高耦合度问题
在开发我的笔记系统时,我遇到了一个问题。问题是,在api-gate服务中,我需要验证用户的access_code,但是access_code的生成逻辑是在auth2服务中实现的。这个问题从架构设计的层面上看,就是一个高耦合度问题。高耦合度会给代码的扩展代码麻烦,并给未来的系统维护带来隐患。原创 2024-01-10 20:21:37 · 1395 阅读 · 0 评论 -
Rust-vec!与Vec::with_capacity初始化数组的区别
在Rust中,数组的长度必须是常量,但是我们可以通过Vec提供的功能来实现“动态”初始化这个“常量”。原创 2024-01-07 23:04:59 · 1292 阅读 · 0 评论 -
Rust-使用Serde对json数据进行反序列化
在Rust中,Serde几乎成了JSON数据解析的事实标准,例如tokio、Actix等网络库都采用Serde来处理JSON的序列化和反序列工作。Serde简化数据序列化和反序列化的过程,提供类型安全和错误处理,支持自定义序列化和反序列化逻辑,它的强大功能使它得到了广泛的应用和支持。原创 2024-01-04 20:48:01 · 2053 阅读 · 0 评论 -
Rust-使用dotenvy加载和使用环境变量
系统的开发,测试和部署离不开环境变量,今天分享在Rust的系统开发中,使用dotenvy来读取和使用环境变量。原创 2023-11-13 11:13:04 · 1625 阅读 · 0 评论 -
Rust-错误处理魔法
我们写的代码主要有两部分,第一部分是正常的业务流程,第二部分是错误处理。 通常情况下,这两部分代码不是分开的,而是杂糅在一起的。 这让我们后期维护正常的业务逻辑非常头疼。今天分享的是Rust语言中的错误处理的魔法, 它可以帮助我们写代码时,将错误处理的“体积”压缩到最小,同时还保证错误分支能被一个剩的处理掉。原创 2023-11-01 17:44:42 · 331 阅读 · 0 评论 -
Rust-虽然9天过去了,结果是没有结果(Docker容器的端口映射问题)
上上周了吧,写了一篇Rust-后端服务调试入坑记,现在看来那个坑根本就不算什么。这次这个坑才是真正的坑。到写文章这一刻,我只是确定了复现这个问题的最简单代码(参考目录验证4:基于Debian:11镜像创建最简单Rust的http服务)。但依然没有找到解决这个问题的办法。现在把这个问题以及我的验证过程整理出来,以便路过的朋友了解,我相信肯定有大神知道其中的缘由和解决办法。还望各位大神留言赐教。结论:Rust创建的api部署到网络模式为bridge的Docker容器中,不能从宿原创 2023-10-31 10:55:00 · 367 阅读 · 2 评论 -
Rust-后端服务调试入坑记
上面这个图画出来用了小半天时间,目前已经实现了资源服务器,认证服务器,token存储服务器和API网关,看似比较顺利,但不知不觉渐渐进入深坑。这个坑是怎么形成的呢?正好前几天在知乎上看见有人提问后端开发是否只是CRUD,我觉得这个问题挺有意思的,因此,决定休息的时候画一张图来展示这个坑的形成过程,正好换换脑子。原创 2023-10-21 18:28:56 · 847 阅读 · 7 评论 -
Rust-类型转换进阶
我们描述了转换的场景,具体的转换步骤和转换的应用方式。这里的场景是数据集和本地类型之间的数据转换。类似的场景还有很多,只要涉及到不同的上下文,数据转换的需求就会出现。使用Rust的`std::convert::From` trait,实际上就是在实践“关注点分离”的设计模式,它会大大提升我们代码的可维护性和可扩展性,个人认为这是写好Rust代码的重要方法之一。原创 2023-10-18 19:57:47 · 446 阅读 · 0 评论 -
Rust-是否使用Rc<T>
Rust的所有权机制,数据允许通过借用的方式,在函数的上下文中传递数据。如果离开数据作用的有效范围,这个借用就会失效,编译就会报错。这也是我们不会将借用(引用)作为函数的返回值的原因。原创 2023-10-16 17:35:55 · 607 阅读 · 0 评论 -
Rust Rocket: 构建Restful服务项目实战
这几天我的笔记系统开发工作进入了搬砖期,前端基于Yew,后端基于Rocket。关于Rocket搭建Restful服务,官方也有介绍,感觉很多细节不到位。因此我打算花2到3天的时间来整理一下,也算是对自己的一个交代。对于有一定经验的开发者来说,他们可能已经熟悉了 Restful 开发中的基本 HTTP 方法,如 GET、POST、PUT 和 DELETE。然而,从项目实战的角度来说,这些方法的细节处理是不容忽视的。在项目开发中,我们必须关注文件夹结构的组织、参数的获取、返回值的处理和日志处理等方面的问题。原创 2023-10-05 11:15:14 · 1476 阅读 · 0 评论
分享