You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API与数据库有何区别?前端、API与数据库如何协同工作?

先讲清楚API和数据库的核心差异

别被各种技术名词绕晕,这俩根本不是同一层级的东西,不存在二选一的关系:

  • 数据库(你提到的MySQL属于这类,同类还有PostgreSQL、MongoDB等等)是最终存数据的持久化载体,你所有的用户信息、业务数据最终都要落在这里。它的核心能力就是高效、安全地完成数据的增删改查、事务保障、存储备份,它不关心访问者要拿数据做什么业务,也绝对不能直接暴露给公网让普通用户访问。
  • API(GraphQL是API的一种设计规范,常见的还有REST、RPC等)是夹在前端和数据库中间的业务中转层,本身不持久化存储业务数据。它的核心作用是承接前端的请求,做所有业务层面的校验、逻辑处理:比如校验请求有没有权限、参数合不合法、敏感数据有没有做脱敏/加密处理,逻辑走完了再按规范去操作数据库,最后把处理好的、前端能直接用的结果返回回去。

很多新手刚接触的时候会误以为GraphQL是数据库类的技术,其实不是,它只是规定了前端和API层之间传数据的格式规则,和MySQL完全不在一个技术栈层面。

前端、API、数据库三者的协同机制

拿你最关心的用户注册/登录场景顺一遍完整流程,你马上就能理清楚:

  1. 前端的工作你已经有概念了,就是负责视觉和交互:用户在页面输入用户名、密码点提交,前端先做最基础的前端校验(比如用户名有没有超长、密码有没有符合格式要求),校验通过后就按API约定好的格式把参数打包,发请求给API——前端永远不会直接连接数据库,要是前端能直连库,别人随便改个前端代码就能拖走你全量用户数据,毫无安全性可言。
  2. API层接收到前端的登录请求后,会做所有核心的业务处理:
    • 先校验请求来源是否合法,有没有伪造的标识
    • 对用户传过来的明文密码做加盐哈希处理(这里提个安全红线:绝对不能把明文密码直接存数据库,必须做不可逆的加盐哈希)
    • 拼接合规的数据库查询语句,比如SELECT id, username FROM users WHERE username = ? AND password_hash = ?,把参数传给数据库发起查询
    • 等数据库返回结果:如果查到匹配的用户,就生成有效的登录凭证(比如session、JWT),和用户非敏感的基本信息一起打包返回给前端;如果没查到匹配记录,就返回“用户名或密码错误”的提示
  3. 数据库层接收到API发过来的操作请求后,先校验当前API使用的数据库账号有没有对应操作权限,权限合法就执行对应的增删改查语句,把结果返回给API——它不会管这次请求是登录还是注册,只负责完成数据层面的操作、返回结果。

给刚搭站的新手提个醒:别为了图省事儿跳过API层让前端直连数据库,哪怕是个人小项目也别这么干。API层除了跑业务逻辑,还要扛恶意请求拦截、流量控制、数据权限隔离这些脏活累活,缺了这一层你的数据基本等于在公网裸奔。

内容的提问来源于stack exchange,提问作者smartish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 21:27:19