单体架构中Rest API的实现及客户端请求方式答疑
单体架构中客户端请求的API实现方式
嘿,我完全懂你的困惑——有时候我们盯着分布式架构的各种复杂术语,反而会把最基础的单体架构逻辑给绕晕了!其实答案比你想的简单,咱们一步步理清楚:
核心结论
单体架构里,客户端和后端的通信逻辑本质上和微服务/SOA的API调用逻辑是相通的,唯一的区别是:单体里没有「服务间调用」这一层,客户端直接对接的是单体应用本身暴露的接口。
具体实现方式
1. 最主流:HTTP-based 接口(含Restful)
不管是Web前端、移动端还是桌面应用,现在单体架构最常用的就是HTTP接口,和你熟悉的微服务调用方式几乎一致:
- 比如用Java Spring MVC写的单体应用,你会在控制器层写这样的代码:
前端就可以用@RestController @RequestMapping("/api/users") public class UserController { @GetMapping("/{id}") public User getUserById(@PathVariable Long id) { // 直接调用单体内部的UserService、操作数据库 return userService.getById(id); } }fetch("/api/users/123")或者Axios请求这个地址,后端直接处理所有逻辑后返回JSON数据。 - 传统的Web单体应用(比如PHP Laravel、Python Django)里,那些返回HTML页面的路由(比如
/posts)其实也是一种API——只是它返回的是渲染好的页面,而非纯数据。表单提交(比如POST到/login)同样属于这类接口的范畴。
2. 小众情况:RPC类接口(极少用于客户端)
极少数老旧的单体应用可能会用RPC(比如Java的RMI、C#的WCF)来和客户端通信,但这种方式现在已经几乎被HTTP接口淘汰了,而且大多只用于内部系统对接,普通客户端很少用到。
纠正你的理解偏差
你之前知道SOA/微服务用Restful/SOAP做服务间通信,但其实:
- 单体架构里同样可以用Restful/SOAP风格的接口,只是这些接口是单体自身暴露给客户端的,而不是服务与服务之间的调用。
- 微服务是把单体拆成了多个独立的服务,每个服务暴露自己的API,然后服务之间互相调用;而单体里所有业务逻辑都在一个进程里,客户端直接调用单体的API,不需要经过服务间路由或者注册中心这一步。
说白了,你可以把单体架构看成是「只有一个服务的微服务架构」——客户端请求的就是这个唯一服务的API,逻辑完全通的!
内容的提问来源于stack exchange,提问作者YepMe
相关产品推荐
相关产品推荐

