用来保护、增强、控制 对于API对于服务的作用
在restful API提供其服务之前的系统(就是说所有的API都要走这个gateway网关呗)
用来管理授权、访问控制和流量限制等,
API网关的四大职责
1.请求接入(所有的API 走这道门 和定义一样 不多说了)
2.业务聚合 含义;API网关作为所有后端业务服务的聚合点,允许所有的业务服务在这里被调用
作用:一次性可调用很多个服务。
3.中介策略 5个词 10个字
安全 验证 路由 过滤 流控
啥是安全:安全在这里就是授权 没授权的直接拦下来了 不准访问。(老知识点 用spring-security 或者是shiro权限框架)
啥是验证:验证就是检查你的客户端发的路由有没有缺失或者格式错误(用到的是咱spring框架里面的老知识点 这里只是用到了而已)
啥是路由:路由策略可以在Nacos控制台进行定义和管理(可参照别人的文章 这里简单 但是需要看看)
啥是过滤:过滤的功能太强大笔者不会 找篇博客去看看(过滤包含了前面几个功能的作用 但是它又独立出来了 既然你独立出来了(说是效率)就不能白白独立)
啥是流控:流控是指对进入系统的流量进行限制和管理,以确保系统的稳定性和可用性。在微服务架构中,流控通常用于防止某个服务被过多的请求压垮,从而导致服务不可用。Spring Cloud Gateway提供了多种流控策略,如基于令牌桶的限流、基于漏桶算法的限流等。
流控可以在nacos控制台或者配置文件(前者是动态更新流控)
校验举例:
(在controller 中 比如来点 非空、格式、安全、一致性校验)
举例:
@NotNull(message = "商品ID不能为空")
@Positive(message = "商品ID必须是正数")
private Long productId;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/orders")
@Validated
public class OrderController {
@PostMapping
public Map<String, Object> createOrder(@Valid @RequestBody Order order) {
// 在这里处理订单创建逻辑
// ...
// 假设订单创建成功,返回一个简单的响应
Map<String, Object> response = new HashMap<>();
response.put("message", "订单创建成功");
response.put("order", order);
return response;
}
// 其他与订单相关的API方法...
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dep