api接口的一些设计原则和最佳实践

技术4 次阅读5 分钟

1. 单一职责原则(Single Responsibility Principle, SRP)

  • 每个模块或函数应该只负责一件事情。新增接口的职责就是接收新数据并插入数据库,而不是处理自动生成的字段。

2. 最小惊讶原则(Principle of Least Astonishment, POLA)

  • 系统应该按照用户或开发者预期的方式工作。自动生成的字段不应该由客户端提供,因为这会违反常规做法,容易导致混淆和错误。

3. 安全性原则

  • 不让客户端传递自动生成的字段可以避免潜在的安全问题,例如数据伪造和篡改。确保数据的真实性和完整性。

4. 简化设计(KISS - Keep It Simple, Stupid)

  • 保持设计简单,避免不必要的复杂性。只处理需要的字段,减少代码中的冗余和潜在错误。

5. 封装(Encapsulation)

  • 封装数据库操作细节,客户端不需要关心数据库是如何生成id和创建时间的,只需要得到结果。这也是一种信息隐藏的方式。

实践中的体现

在实际开发中,遵循这些原则可以提高代码的可维护性、安全性和可读性。例如:

  • 数据库自动生成字段:让数据库来生成id、创建时间等字段,可以保证数据的一致性和唯一性,避免手动处理带来的错误。
  • API设计:在API设计中,明确哪些字段是客户端需要提供的,哪些是由服务器生成的,保证接口的清晰性和可靠性。

Talk is cheap. Show me the code.

​ -Linux 创始人 Linus Torvalds

从请求体上下文ctx.user中只取该接口控制器AuthController需要的字段数据,其中创建上下文的中间件verifyAuth可以应用在不同的路由/业务接口中。

image-20240721081744300

image-20240721081613510

image-20240721075318479

cos的上传需要返回https链接,符合高版本chrome浏览器的安全策略以及最佳做法

image-20240721082223721

image-20240721082517590

扩展阅读

代码整洁之道 中文完整版-带书签.pdf

九年总结:优秀程序设计的18大原则

继续阅读

基于全文检索与主题相似度

技术

Rust设计思想引申到JavaScript程序设计

本文探讨了如何将Rust语言的设计理念融入JavaScript开发,以提升代码的可靠性与性能。核心借鉴点包括:通过明确资源管理借鉴所有权思想;利用不可变数据结构(如Immutable.js)减少状态复杂性;引入TypeScript增强类型安全性;以及通过模式匹配优化控制流。此外,文章指出JavaScript可借助ESLint、Web Workers等工具实现类似Rust的安全性、高效内存管理与并发处理。通过采纳这些设计哲学,开发者能够编写出更健壮、易于维护的现代JavaScript应用。

技术

excel公式引擎方案设计

本文探讨了前端电子表格计算引擎的实现方案,旨在解决海量数据处理中的逻辑运算与统计需求。核心挑战在于构建单元格间的复杂依赖关系以实现自动更新,以及对公式字符串进行词法解析。文章详细介绍了公式的组成要素(函数、常量、引用及运算符),并重点分析了基于表达式模板与引用位置组合的存储机制。此外,文中还阐述了相对引用、绝对引用及混合引用的实现原理,为设计高效、智能的表格计算引擎提供了理论基础与架构思路。

技术

前端编程范式与设计模式

本文探讨了前端开发中提升代码质量的核心编程范式与设计模式。在编程范式方面,重点介绍了异步编程(Promise/async/await)、面向对象编程(封装与继承)、函数式编程(纯函数与高阶函数)以及反应式编程(RxJS事件流)。在设计模式部分,详细阐述了单例、工厂、观察者及装饰者模式的实际应用。掌握这些技术有助于开发者构建更具可维护性、扩展性和可读性的高质量前端项目。