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

怎么编写程序西安网站seo技术厂家

怎么编写程序,西安网站seo技术厂家,互联网+大学生创新创业项目官网,公众号 手机网站开发前言 前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言前言1、通过API网关访问服务2、Spring Cloud GateWay 最主要的功能就是路由…前言 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言前言1、通过API网关访问服务2、Spring Cloud GateWay 最主要的功能就是路由转发3、Gateway的工作流程4、Predicate 断言5、示例5.1、pom.xml配置5.2、application.xml配置5.3、启动类 6、动态路由6.1、修改application.xml配置 7、过滤器Filter7.1、Filter 分类7.1.1、GatewayFilter7.1.2、实例7.1.2、GlobalFilter 前言 API 网关是一个搭建在客户端和微服务之间的服务我们可以在 API 网关中处理一些非业务功能的逻辑例如权限验证、监控、缓存、请求路由等。 1、通过API网关访问服务 客户端通过 API 网关与微服务交互时客户端只需要知道 API 网关地址即可而不需要维护大量的服务地址简化了客户端的开发。客户端直接与 API 网关通信能够减少客户端与各个服务的交互次数。客户端与后端的服务耦合度降低。节省流量提高性能提升用户体验。API 网关还提供了安全、流控、过滤、缓存、计费以及监控等 API 管理功能。 2、Spring Cloud GateWay 最主要的功能就是路由转发 而在定义转发规则时主要涉及了以下三个核心概念如下表。 核心概念描述Route路由网关最基本的模块。它由一个 ID、一个目标 URI、一组断言Predicate和一组过滤器Filter组成。Predicate断言路由转发的判断条件我们可以通过 Predicate 对 HTTP 请求进行匹配例如请求方式、请求路径、请求头、参数等如果请求与断言匹配成功则将请求转发到相应的服务。Filter过滤器过滤器我们可以使用它对请求进行拦截和修改还可以使用它对上文的响应进行再处理。 3、Gateway的工作流程 客户端将请求发送到 Spring Cloud Gateway 上。Spring Cloud Gateway 通过 Gateway Handler Mapping 找到与请求相匹配的路由将其发送给 Gateway Web Handler。Gateway Web Handler 通过指定的过滤器链Filter Chain将请求转发到实际的服务节点中执行业务逻辑返回响应结果。过滤器之间用虚线分开是因为过滤器可能会在转发请求之前pre或之后post执行业务逻辑。过滤器Filter可以在请求被转发到服务端前对请求进行拦截和修改例如参数校验、权限校验、流量监控、日志输出以及协议转换等。过滤器可以在响应返回客户端之前对响应进行拦截和再处理例如修改响应内容或响应头、日志输出、流量监控等。响应原路返回给客户端。 4、Predicate 断言 pring Cloud Gateway 通过 Predicate 断言来实现 Route 路由的匹配规则。简单点说Predicate 是路由转发的判断条件请求只有满足了 Predicate 的条件才会被转发到指定的服务上进行处理。 常见的 Predicate 断言如下表假设转发的 URI 为 http://localhost:8001。 断言示例说明Path- Path/user/listUserInfo/**当请求路径与 /user/listUserInfo/** 匹配时该请求才能被转发到 http://localhost:8001上。Before- Before2022-12-07T11:47:34.25508:00[Asia/Shanghai]在 2022 年 12 月 07 日 11 时 47 分 34.255 秒之前的请求才会被转发到 http://localhost:8001上。After- After2022-12-07T11:47:34.25508:00[Asia/Shanghai]在 2022 年 12 月 07 日 11 时 47 分 34.255 秒之后的请求才会被转发到 http://localhost:8001上。Between- Between2022-12-07T15:18:33.22608:00[Asia/Shanghai],2022-12-07T15:23:33.22608:00[Asia/Shanghai]在 2022 年 12 月 07 日 15 时 18 分 33.226 秒 到 2022 年 12 月 07 日 15 时 23 分 33.226 秒之间的请求才会被转发到 http://localhost:8001服务器上。Cookie- Cookiename,hqyj.com携带 Cookie 且 Cookie 的内容为 namehqyj.com 的请求才会被转发到 http://localhost:8001上。Header- HeaderX-Request-Id,\d请求头上携带属性 X-Request-Id 且属性值为整数的请求才会被转发到 http://localhost:8001上。Method- MethodGET只有 GET 请求才会被转发到 http://localhost:8001上。 5、示例 建立子模块gateway-service 5.1、pom.xml配置 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.hqyj/groupIdartifactIdSpringCloud/artifactIdversion0.0.1-SNAPSHOT/version/parentartifactIdgateway-service/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency/dependencies/project5.2、application.xml配置 server:port: 80 spring:application:name: gateway-servicecloud:gateway: #网关路由配置routes:#将 drp-user-service 提供的服务隐藏起来不暴露给客户端只给客户端暴露 API 网关的地址 80- id: drp-user-service_routh #路由 id,没有固定规则但唯一建议与服务名对应uri: http://localhost:8001 #匹配后提供服务的路由地址predicates:#以下是断言条件必选全部符合条件- Path/user/userInfoList/** #断言路径匹配 注意Path 中 P 为大写- MethodGET #只能时 GET 请求时才能访问eureka:instance:instance-id: gateway-servicehostname: localhostclient:fetch-registry: trueregister-with-eureka: trueservice-url:defaultZone: http://localhost:7001/eureka5.3、启动类 SpringBootApplication EnableEurekaClient public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class,args);} }访问http://localhost/user/userInfoList 6、动态路由 以服务名spring.application.name作为路径创建动态路由进行转发从而实现动态路由功能 Route 的 uri 地址修改为以下形式。 lb://service-name6.1、修改application.xml配置 server:port: 80 spring:application:name: gateway-servicecloud:gateway: #网关路由配置routes:#将 user-service 提供的服务隐藏起来不暴露给客户端只给客户端暴露 API 网关的地址 80- id: user-service_routh #路由 id,没有固定规则但唯一建议与服务名对应,必须是*_routh格式否则报错uri: lb://USER-SERVICE #匹配后提供服务的路由地址 , 必须引入依赖spring-cloud-starter-loadbalancerpredicates:#以下是断言条件必选全部符合条件- Path/user/userInfoList/** #断言路径匹配 注意Path 中 P 为大写- MethodGET #只能时 GET 请求时才能访问metadata:connect-timeout: 10#单位毫秒response-timeout: 10000- id: admin-service_routh #路由 id,没有固定规则但唯一建议与服务名对应,必须是*_routh格式否则报错uri: lb://ADMIN-SERVICE #匹配后提供服务的路由地址 , 必须引入依赖spring-cloud-starter-loadbalancerpredicates:#以下是断言条件必选全部符合条件- Path/api/admin/** #断言路径匹配 注意Path 中 P 为大写- MethodGET #只能时 GET 请求时才能访问metadata:connect-timeout: 10#单位毫秒response-timeout: 10000eureka:instance:instance-id: gateway-servicehostname: localhostclient:fetch-registry: trueregister-with-eureka: trueservice-url:defaultZone: http://localhost:7001/eureka7、过滤器Filter 用户登陆状态校验、签名校验。 Spring Cloud Gateway 提供了以下两种类型的过滤器 过滤器类型说明Pre 类型这种过滤器在请求被转发到微服务之前可以对请求进行拦截和修改例如参数校验、权限校验、流量监控、日志输出以及协议转换等操作。Post 类型这种过滤器在微服务对请求做出响应后可以对响应进行拦截和再处理例如修改响应内容或响应头、日志输出、流量监控等。 7.1、Filter 分类 按照作用范围划分Spring Cloud gateway 的 Filter 可以分为 2 类GatewayFilter、GlobalFilter 7.1.1、GatewayFilter 应用在单个路由或者一组路由上的过滤器。 常用的GatewayFilter过滤器 路由过滤器描述参数使用示例AddRequestHeader拦截传入的请求并在请求上添加一个指定的请求头参数。name需要添加的请求头参数的 keyvalue需要添加的请求头参数的 value。- AddRequestHeadermy-request-header,1024AddRequestParameter拦截传入的请求并在请求上添加一个指定的请求参数。name需要添加的请求参数的 keyvalue需要添加的请求参数的 value。- AddRequestParametermy-request-param,c.biancheng.netAddResponseHeader拦截响应并在响应上添加一个指定的响应头参数。name需要添加的响应头的 keyvalue需要添加的响应头的 value。- AddResponseHeadermy-response-header,c.biancheng.netPrefixPath拦截传入的请求并在请求路径增加一个指定的前缀。prefix需要增加的路径前缀。-PrefixPath/consumerPreserveHostHeader转发请求时保持客户端的 Host 信息不变然后将它传递到提供具体服务的微服务中。无-PreserveHostHeaderRemoveRequestHeader移除请求头中指定的参数。name需要移除的请求头的 key。- RemoveRequestHeadermy-request-headerRemoveResponseHeader移除响应头中指定的参数。name需要移除的响应头。- RemoveResponseHeadermy-response-headerRemoveRequestParameter移除指定的请求参数。name需要移除的请求参数。- RemoveRequestParametermy-request-paramRequestSize配置请求体的大小当请求体过大时将会返回 413 Payload Too Large。maxSize请求体的大小。- name:RequestSizeargs: maxSize: 5000000 |7.1.2、实例 spring:application:name: gateway-servicecloud:gateway: #网关路由配置routes:#将 user-service 提供的服务隐藏起来不暴露给客户端只给客户端暴露 API 网关的地址 80- id: user-service_routh #路由 id,没有固定规则但唯一建议与服务名对应, 必须是*_routh格式否则报错uri: lb://USER-SERVICE #匹配后提供服务的路由地址,#匹配后提供服务的路由地址 , 必须引入依赖spring-cloud-starter-loadbalancerpredicates:#以下是断言条件必选全部符合条件- Path/userInfoList/** #断言路径匹配 注意Path 中 P 为大写- MethodGET #只能时 GET 请求时才能访问filters:- AddRequestHeadertoken,tigergege- PrefixPath/user7.1.2、GlobalFilter 应用在所有的路由上的过滤器可用于统一异常处理 import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.server.RequestPath; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; import java.util.List;/**** title DrfGlobalFilter* desctption 登录验证* author Administrator* create 2023/5/15 14:17**/ Component public class DrfGlobalFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request exchange.getRequest();//获取URI地址RequestPath path request.getPath();HttpHeaders headers request.getHeaders();ListString stringList headers.get(token);//是否登录验证if(CollectionUtils.isEmpty(stringList)){ServerHttpResponse response exchange.getResponse();response.setStatusCode(HttpStatus.UNAUTHORIZED);return response.setComplete();}return chain.filter(exchange);}Overridepublic int getOrder() {//过滤器优先级0为最高return 0;} }
http://www.w-s-a.com/news/568773/

相关文章:

  • 现在网站还用asp做男科医院哪家好一些
  • 服装设计网站素材郑州汉狮做网站网络公司
  • 宜州做网站做仿制网站
  • 中山营销型网站厦门工程建设招聘信息网站
  • 网站开发 外包空心找回微信
  • 长沙市网站推广多少钱网站开发流程图和介绍
  • 网站后缀net施工企业自建自用的工程可以不进行招标是否正确
  • 鄂尔多斯市住房和城乡建设厅网站帮别人做网站赚钱6
  • 宜选科技就是帮人做网站动漫制作专业主修课程
  • 怎么做网站免费的教程温州捷创网站建设
  • 做免费推广的网站有哪些深圳华强北最新消息
  • 电子商务网站建设规划开题报告桂林漓江景区游玩攻略
  • 程序员参与洗钱网站建设做视频网站需要多少钱
  • 网站建设背景是什么企业邮箱怎么写
  • 山东省建设资格中心网站iis wordpress安装教程
  • 做的网站 显示乱码怎么做微信小程序平台
  • 怎样建设打字网站怎样增加网站浏览量
  • 网站建设方案的征求意见网站主机免备案
  • 共享农业网站建设郑州市建网站
  • 成都网站建设四川冠辰网站建设带会员系统的网站模板
  • 水果网站建设方案书wordpress get_the_category
  • 第一ppt网站官网买域名价格
  • 网站 报价单自己做的网站如何上传
  • 天津网站建立辽宁建设工程信息网2017年定额人工费系数
  • 柳州网站优化搜索引擎优化方法案例
  • 什么网站比较少人做响应式网站开发周期
  • 公司网站欢迎语工作期间员工花钱做的网站
  • 新网站该如何做网站优化呢网络营销网站设计
  • 旅游门户网站模板下载做策划网站推广怎么写简历
  • 建设隔离变压器移动网站wordpress动态导航