当前位置: 首页 > news >正文

商务型网站自主式响应网站

商务型网站,自主式响应网站,所有北京网站建设公司,淮安网站建设公司电话Getway 入门简介 网关搭建步骤#xff1a; 创建项目#xff0c;引入nacos服务发现和gateway依赖 配置application.yml#xff0c;包括服务基本信息、nacos地址、路由 路由配置包括#xff1a; 路由id#xff1a;路由的唯一标示 路由目标#xff08;uri#xff09;…Getway 入门简介 网关搭建步骤 创建项目引入nacos服务发现和gateway依赖 配置application.yml包括服务基本信息、nacos地址、路由 路由配置包括 路由id路由的唯一标示 路由目标uri路由的目标地址http代表固定地址lb代表根据服务名负载均衡 路由断言predicates判断路由的规则 路由过滤器filters对请求或响应做处理 引入相关依赖 !--网关-- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId /dependency !--nacos服务发现依赖-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency配置文件 predicates这个一定不能重复是唯一的 server:port: 10010 spring:application:name: gatewaycloud:nacos:server-addr: 192.168.31.140:8848 # nacos 地址gateway:routes:- id: user-service # 路由标识必须唯一uri: lb://user-service # 路由的目标地址predicates: # 路由断言判断请求是否符合规则- Path/user/** # 路径断言- id: order-serviceuri: lb://order-servicepredicates:- Path/order/**启动项目 测试下是否正确将user-sevice和order-service代理成10010端口 路由断言 像这样的断言工厂在SpringCloudGateway还有十几个我们只需要掌握Path这种路由工程就可以了。 名称说明示例After是某个时间点后的请求- After2037-01-20T17:42:47.789-07:00[America/Denver]Before是某个时间点之前的请求- Before2031-04-13T15:14:47.43308:00[Asia/Shanghai]Between是某两个时间点之前的请求- Between2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]Cookie请求必须包含某些cookie- Cookiechocolate, ch.pHeader请求必须包含某些header- HeaderX-Request-Id, \dHost请求必须是访问某个host域名- Host.somehost.org,.anotherhost.orgMethod请求方式必须是指定方式- MethodGET,POSTPath请求路径必须符合指定规则- Path/red/{segment},/blue/**Query请求参数必须包含指定参数- Queryname, Jack或者- QuerynameRemoteAddr请求者的ip必须是指定范围- RemoteAddr192.168.1.1/24Weight权重处理 示例 After 要想在亚洲/上海2031-12-06T15:14:47.433之前访问 只需要加上请求头即可 - After2031-12-06T15:14:47.43308:00[Asia/Shanghai] # 添加请求头完善配置 server:port: 10010 spring:application:name: gatewaycloud:nacos:server-addr: 192.168.31.140:8848 # nacos 地址gateway:routes:- id: user-service # 路由标识必须唯一uri: lb://user-service # 路由的目标地址predicates: # 路由断言判断请求是否符合规则- Path/user/** # 路径断言- id: order-serviceuri: lb://order-servicepredicates:- Path/order/**- After2031-12-06T15:14:47.43308:00[Asia/Shanghai] # 添加请求头会有404错误 Before 要想在亚洲/上海2031-12-06T15:14:47.433之后访问 server:port: 10010 spring:application:name: gatewaycloud:nacos:server-addr: 192.168.31.140:8848 # nacos 地址gateway:routes:- id: user-service # 路由标识必须唯一uri: lb://user-service # 路由的目标地址predicates: # 路由断言判断请求是否符合规则- Path/user/** # 路径断言- id: order-serviceuri: lb://order-servicepredicates:- Path/order/**- Before2031-12-06T15:14:47.43308:00[Asia/Shanghai] # 添加请求头访问是成功的 过滤器 路由过滤器的种类 Spring提供了31种不同的路由过滤器工厂。 名称说明AddRequestHeader给当前请求添加一个请求头RemoveRequestHeader移除请求中的一个请求头AddResponseHeader给响应结果中添加一个响应头RemoveResponseHeader从响应结果中移除有一个响应头RequestRateLimiter限制请求的流量 请求头过滤器 只需要在配置文件中加上 filters:- AddRequestHeaderTruth, Bunny-cli # 添加请求头完善配置为所有请求头统一加上 server:port: 10010 spring:application:name: gatewaycloud:nacos:server-addr: 192.168.31.140:8848 # nacos 地址gateway:routes:- id: user-service # 路由标识必须唯一uri: lb://user-service # 路由的目标地址predicates: # 路由断言判断请求是否符合规则- Path/user/** # 路径断言- id: order-serviceuri: lb://order-servicepredicates:- Path/order/**- Before2031-12-06T15:14:47.43308:00[Asia/Shanghai] # 添加请求头filters:- AddRequestHeaderTruth, Bunny-cli # 添加请求头并在order-serve中打印 GetMapping({orderId}) public Order queryOrderByUserId(PathVariable(orderId) Long orderId,RequestHeader(value Truth,required false) String truth) {log.info(------------truth------------:{}, truth);return orderService.queryOrderById(orderId); }效果展示 在配置文件中加上过滤器如果设置中文的话会有乱码。 默认过滤器 为所有配置都加上 如果要对所有的路由都生效则可以将过滤器工厂写到default下 server:port: 10010 spring:application:name: gatewaycloud:nacos:server-addr: 192.168.31.140:8848 # nacos 地址gateway:routes:- id: user-service # 路由标识必须唯一uri: lb://user-service # 路由的目标地址predicates: # 路由断言判断请求是否符合规则- Path/user/** # 路径断言- id: order-serviceuri: lb://order-servicepredicates:- Path/order/**- Before2031-12-06T15:14:47.43308:00[Asia/Shanghai] # 添加请求头 # filters: # - AddRequestHeaderTruth, Bunny-cli # 添加请求头default-filters:- AddRequestHeaderTruth, Bunny-cli # 添加全局请求头在所有请求都输出下 过滤器的作用是什么 对路由的请求或响应做加工处理比如添加请求头配置在路由下的过滤器只对当前路由的请求生效 defaultFilters的作用是什么 对所有路由都生效的过滤器 全局过滤器 全局过滤器的作用也是处理一切进入网关的请求和微服务响应与GatewayFilter的作用一样。区别在于GatewayFilter通过配置定义处理逻辑是固定的而GlobalFilter的逻辑需要自己写代码实现。 定义方式是实现GlobalFilter接口。 定义过滤器 在gateway中定义一个过滤器 判断当前用户是否为admin如果是的放行 判断请求的params中是否包含adminparams.getFirst(authorization) 通过params中authorization字段判断 import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono;Order(-1)// 值越小权重越高 Component public class AuthorizeFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1. 获取请求参数ServerHttpRequest request exchange.getRequest();MultiValueMapString, String params request.getQueryParams();// 2. 获取参数中的 authorizationString authorization params.getFirst(authorization);// 3. 判断参数是否等于adminif (admin.equals(authorization)) {return chain.filter(exchange); // 4. 是放行}// 5. 否放行exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();} }如果存在可以正常获取到结果如果当前不是admin则返回 401 如果当前不是admin返回401。不通过。 exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED)中HttpStatus枚举 过滤器执行顺序 Order注解 Order可以使用注解中的Order数值越小权重越高。或者使用继承Ordered实现同样的效果。 Ordered继承实现 通过返回getOrder数值效果同样值越小权重越高 // 也可以使用 Ordered 修改权重 Override public int getOrder() {return -1; }排序的规则是什么呢 每一个过滤器都必须指定一个int类型的order值order值越小优先级越高执行顺序越靠前。GlobalFilter通过实现Ordered接口或者添加Order注解来指定order值由我们自己指定路由过滤器和defaultFilter的order由Spring指定默认是按照声明顺序从1递增。当过滤器的order值一样时会按照 defaultFilter 路由过滤器 GlobalFilter的顺序执行。 跨域问题 跨域问题在服务端是不存在的就比如之前调用的接口user访问Order它们之间没有跨域问题包括在gateway中也没有。 浏览器禁止请求的发起者与服务端发生跨域ajax请求请求被浏览器拦截的问题。 解决方式 需要再配置中加上globalcors spring:cloud:gateway:globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:[/**]:allowedOrigins: # 允许哪些网站的跨域请求- http://localhost:8090- http://127.0.0.1:5500allowedMethods: # 允许的跨域ajax的请求方式- GET- POST- DELETE- PUT- OPTIONSallowedHeaders: * # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期完善代码 server:port: 10010 spring:application:name: gatewaycloud:nacos:server-addr: 192.168.31.140:8848 # nacos 地址gateway:routes:- id: user-service # 路由标识必须唯一uri: lb://user-service # 路由的目标地址predicates: # 路由断言判断请求是否符合规则- Path/user/** # 路径断言- id: order-serviceuri: lb://order-servicepredicates:- Path/order/**- Before2031-12-06T15:14:47.43308:00[Asia/Shanghai] # 添加请求头default-filters:- AddRequestHeaderTruth, Bunny-cli # 添加请求头globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:[/**]:allowedOrigins: # 允许哪些网站的跨域请求- http://localhost:5500- http://127.0.0.1:5500allowedMethods: # 允许的跨域ajax的请求方式- GET- POST- DELETE- PUT- OPTIONSallowedHeaders: * # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期未设置时 设置完成后效果
http://www.pierceye.com/news/263406/

相关文章:

  • 在哪个网站做问卷好单页面网站推广
  • 专业网站建设模块维护静海网站建设
  • 国内前十网站建设公司龙之网官网
  • 昆山做网站的公昆山做网站的公司司网站开发与设计岗位职责
  • 网站投注员怎么做做旅游项目用哪家网站好
  • 环县网站怎么做咸阳网站开发公司地址
  • 重庆巴南网站制作wordpress外贸建站公司
  • 桂林旅游网站制作公司软件开发公司属于什么行业
  • 网站 备案 中国 名字老薛主机 wordpress
  • 有什么网站可以做投票功能合肥房地产交易网
  • 世界网站广西建设工程质检安全网站
  • 建设银行网站会员基本信息wordpress主题图片丢失
  • 找人做网站需要注意什么问题中国建设信用卡网站
  • 公众号制作的网站开发营销平台推广
  • 河源手机网站制作网站页面效果图怎么做
  • 公司网站建设要注意的问题wordpress上传图片x
  • 网站开发PHP留言本快代理
  • 温州做网站价格怎么做简易手机网站
  • 东营网站建设制作广州物流网站建设
  • 新乡建设工程信息网站kindeditor wordpress
  • 做一个京东这样的网站需要多少钱上网导航网页是哪家公司
  • 网站开发到上线的流程外贸网站 开源站建设行吗
  • 神华科技网站建设个人网站做哪些流程
  • 怎么查看网站空间是否到期如何用百度上传图片做网站外链
  • 可以做问卷挣钱的网站酒泉建设局网站
  • 阿里万网怎么做网站向百度提交网站
  • 杭州模板网站好网站漂浮广告怎么做
  • a站为什么不火了站群宝塔批量建站
  • 免费网站建设pptlinkcat wordpress
  • html5 网站大连在哪里哪个省