何时不从 Scratch 开始编码:后端版

2025-06-07

何时不从 Scratch 开始编码:后端版

在花费大量时间开发个人项目的后端,并积累了一些工作经验后,我觉得是时候补充一下之前文章中缺失的部分了。本系列主要致力于指导新开发人员,他们可以将软件的哪些部分外包给库或服务,这样他们就不必再重复造轮子了。

后端开发对许多应用程序至关重要,因为它保存并管理着公司最宝贵的资源之一:数据。这意味着在处理软件的这些关键领域时需要更加谨慎。幸运的是,可以利用框架和库来节省时间并提高代码的安全性。本文将讨论哪些部分可以委托给第三方工具或库,但最终的选择权在于您!

请求和响应处理

大多数后端框架通常至少带有一些路由功能,允许您定义如何通过请求寻址应用程序,以及返回响应的能力。通常无需花费时间自行实现,但我建议您比较一下多个框架或库的实现方式,并根据您的偏好选择一个。

用户身份验证和授权

用户权限对任何应用程序都至关重要,因为它们保护着敏感信息。通常,框架会自带用户功能,具体取决于框架的规范。这些功能通常会为您处理以下事项,因此您无需从头编写代码:

  • 用户的数据库模型
  • 基本用户操作的方法(注册、登录、密码重置)
  • 会话管理以验证用户是否登录
  • 权限类别可让您区分不同类型的用户(例如管理员与普通用户)

如果您要手动编写注册和登录代码,请确保使用散列库加密密码!

通常有一些库会在你指定的框架提供的功能之上提供额外的功能(例如“all-auth”,这是一个基于 Python 后端框架 Django 构建的框架)。它们旨在为常见的用户相关模式提供开箱即用的解决方案,但这些模式可能并非至关重要,因此并非基础框架的必需组成部分。如果你正在尝试以下操作,我建议你寻找第三方库:

  • 通过电子邮件、recaptcha 或其他服务进行帐户验证
  • 双因素身份验证
  • API 的令牌生成
  • 通过第三方账户(Google、Facebook 等)进行身份验证

服务器端渲染模板

大多数后端框架都提供了使用数据库中数据动态生成 HTML 内容的方法。这通常使用像 Jinja 或 thymeleaf 这样的模板语言来实现。据我所知,大多数框架都内置了此功能,所以如果你选择 SSR,我实在想不出有什么理由从头开始编写这个功能。

数据库查询

许多框架都支持所谓的 ORM,或者允许您轻松添加一个。ORM 代表对象关系映射 (ORM),允许您将数据库表映射到您正在使用的指定语言的对象。它们还提供了更简单的数据访问方式。虽然这可以使开发更加便捷,但使用 ORM 会带来额外的开销。如果您更喜欢使用原始 SQL,那么您仍然应该使用库来处理数据库连接并过滤查询以防止 SQL 注入。

API 有效负载序列化

在客户端和服务器之间发送数据时,您需要选择使用的数据格式。API 序列化框架允许您将给定编程语言中的对象转换为常见的数据格式,例如 JSON 或 XML。

API 端点生成

使用 GraphQL 时,从头创建端点逻辑可能非常繁琐。一些库的出现让这一切变得更容易。

即使使用 REST,您也可以经常利用“路由器”,它允许您定义一些您想要为给定对象支持的通用方法(更新、创建、获取等),并且路由器会为您生成一个实现。

整个后端……?

有时,您的网站并不需要后端!这种情况是什么时候发生的呢?嗯,如今的 API 服务使得创建使用第三方数据和前端代码的应用程序成为可能。此外,像 Wordpress 这样的内容管理系统,借助一些插件,或许也能满足您的需求。最后,还有像 Firebase 这样的新兴 BaaS(后端即服务),当您不想做太花哨或独特的事情,并且想要快速迭代时,可以使用它。这包括身份验证之类的工作,可以使用 OAuth 轻松地将其外包给 Google 或 Facebook 等第三方(请注意,dev.to 是如何做到这一点的,它只允许使用 Twitter 或 GitHub 登录)。

我希望您喜欢这个简短而有趣的概述,其中介绍了一些在编写后端代码时可以偷工减料的方法!

文章来源:https://dev.to/marcbeaujean/when-not-to-code-it-from-scratch-backend-edition-2cb9
PREV
作为一名 Web 开发者,你需要的 10 个资源 freeCodeCamp HTMLrev 字体使用中 Icônes ColorSpace 语法 Vercel Linktopus 编码面试开发资源
NEXT
Dockerfile 创建自定义容器的基础知识