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

凡科建站建网站网络营销推广策略有哪些

凡科建站建网站,网络营销推广策略有哪些,做网站制作,怎么样才能创建自己的网站目录 1、简介 2、Spring Cloud Gateway 快速回顾 3、基于配置的 URL 重写 4、基于 DSL 的 URL 重写 5、测试 6、总结 1、简介 Spring Cloud Gateway 的常见用例是作为一个网关#xff0c;代理一个或多个服务#xff0c;从而为客户端提供更简单的消费方式。 本文将带你…目录 1、简介 2、Spring Cloud Gateway 快速回顾 3、基于配置的 URL 重写 4、基于 DSL 的 URL 重写 5、测试 6、总结 1、简介 Spring Cloud Gateway 的常见用例是作为一个网关代理一个或多个服务从而为客户端提供更简单的消费方式。 本文将带你了解如何在将请求发送到后端之前通过重写 URL 来自定义暴露的 API 的不同方式。 2、Spring Cloud Gateway 快速回顾 Spring Cloud Gateway 项目是在流行的 Spring Boot 2 和 Project Reactor 的基础上构建的因此继承了其主要特性 响应式资源占用低支持 Spring Cloud 生态系统的所有功能服务发现、配置等使用标准 Spring 模式轻松扩展和/或定制 这里只列出它的主要概念更多详细信息请参阅 中文文档 Route路由在网关中匹配的传入请求会经历一系列的处理步骤。Predicate针对 ServerWebExchange 进行评估的 Java 8 Predicate。Filters可以检查、更改 ServerWebExchange 的 GatewayFilter 实例。网关支持全局 Filter 和按路由的 Filter。 简而言之接收请求的处理顺序如下 网关使用与每条路由相关的 Predicate 来查找哪条路由可以处理请求。一旦找到路由请求ServerWebExchange 实例就会通过每个配置的 Filter直到最终发送到后端。当后端发送回响应或出现错误例如超时或连接重置时Filter 可以再次处理响应然后再将其发送回客户端。 3、基于配置的 URL 重写 回到本文的主题让我们看看如何定义一个路由在将请求发送到后端之前重写传入的 URL。例如假设输入的请求格式为 /api/v1/customer/*后端 URL 应为 http://v1.customers/api/*。这里使用 “*” 来表示 “在此之后的任何内容”。 只需在应用的配置中添加几个属性就可以创建基于配置的重写。为了更好的可读性使用基于 YAML 的配置这些信息可以来自任何受支持的 PropertySource spring:cloud:gateway:routes:- id: rewrite_v1uri: ${rewrite.backend.uri:http://example.com}predicates:- Path/v1/customer/**filters:- RewritePath/v1/customer/(?segment.*),/api/$\{segment}分析一下这个配置。首先路由有一个 id这只是它的标识符。其次uri 属性给出了后端 URI。注意这里只考虑了主机名/端口因为最终路径来自重写逻辑。 predicates 属性定义了激活此路由必须满足的条件。在本例中我们使用了 Path predicate它使用类似于 Ant 的路径表达式来匹配传入请求的路径。 最后filters 属性具有实际的重写逻辑。RewritePath Filter 需要两个参数正则表达式和替换字符串。Filter 的实现方式是使用提供的参数作为参数在请求的 URI 上执行 replaceAll() 方法。 Spring 处理配置文件的方式有一个注意事项那就是不能使用标准的 ${group} 替换表达式因为 Spring 会认为这是一个属性引用并尝试替换其值。为了避免这种情况需要在 $ 和 { 字符之间添加反斜杠Filter 会在使用它作为实际替换表达式之前移除反斜杠。 4、基于 DSL 的 URL 重写 虽然 RewritePath 非常强大且易于使用但在重写规则具有某些动态特性的情况下它就显得力不从心了。根据情况可以使用基于 DSL 的方法创建路由。我们需要做的就是创建一个 RouteLocator Bean 来实现路由的逻辑。 举个例子创建一个简单的路由和上面一样使用正则表达式重写传入的 URI。但这次替换字符串将在每次请求时动态生成 Configuration public class DynamicRewriteRoute {Value(${rewrite.backend.uri})private String backendUri;private static Random rnd new Random();Beanpublic RouteLocator dynamicZipCodeRoute(RouteLocatorBuilder builder) {return builder.routes().route(dynamicRewrite, r -r.path(/v2/zip/**).filters(f - f.filter((exchange, chain) - {ServerHttpRequest req exchange.getRequest();addOriginalRequestUrl(exchange, req.getURI());String path req.getURI().getRawPath();String newPath path.replaceAll(/v2/zip/(?zipcode.*), /api/zip/${zipcode}- String.format(%03d, rnd.nextInt(1000)));ServerHttpRequest request req.mutate().path(newPath).build();exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, request.getURI());return chain.filter(exchange.mutate().request(request).build());})).uri(backendUri)).build();} }在这里动态部分只是将一个随机数添加到替换字符串中。在实际应用中可能会有更复杂的逻辑但基本机制如下所示。 首先它调用了 addOriginalRequestUrl() 方法该方法来自 ServerWebExchangeUtils 类用于将原始 URL 存储在 exchange attribute GATEWAY_ORIGINAL_REQUEST_URL_ATTR 下。该属性的值是一个 List我们将在进行任何修改之前将接收到的 URL 追加到该 List 中并且网关在处理 X-Forwarded-For Header 时会内部使用该 List。 其次应用重写逻辑后必须将修改后的 URL 保存在 GATEWAY_REQUEST_URL_ATTR exchange attribute 中。这一步在文档中没有直接提及但可以确保我们的自定义 Filter 与其他可用 Filter 良好地协同工作。 5、测试 使用标准的 JUnit 5 来测试我们的重写规则。 稍加改动使用基于 Java SDK 的 com.sun.net.httpserver.HttpServer 类启动一个简单的服务器。使用随机端口从而避免端口冲突。 不过这种方法的缺点是必须找出实际分配给服务器的端口并将其传递给 Spring以便使用它来设置路由的 uri 属性。幸运的是Spring 为我们提供了一个优雅的解决方案 DynamicPropertySource在此使用它启动服务器并使用绑定端口的值注册一个属性 DynamicPropertySource static void registerBackendServer(DynamicPropertyRegistry registry) {registry.add(rewrite.backend.uri, () - {HttpServer s startTestServer();return http://localhost: s.getAddress().getPort();}); }测试 Handler 只需在响应体中回传接收到的 URI 即可。这样就能验证重写规则是否按预期运行。 Test void testWhenApiCall_thenRewriteSuccess(Autowired WebTestClient webClient) {webClient.get().uri(http://localhost: localPort /v1/customer/customer1).exchange().expectBody().consumeWith((result) - {String body new String(result.getResponseBody());assertEquals(/api/customer1, body);}); }6、总结 本文介绍了在 Spring Cloud Gateway 中如何通过配置文件和 DSL 来重写路由 URL。
http://www.tj-hxxt.cn/news/232452.html

相关文章:

  • 福建省教师空间建设网站logo免费设计无水印
  • 网站制作哪里做得好做网站需要学哪些语言
  • 建设一个棋牌网站都得准备什么用兰州网站哪里做
  • 荆州公司网站建设建设部网站办事大厅栏目
  • 网站开发公司创业策划wordpress关键词描述插件
  • 免费建站软件哪个最好网站特色分析
  • 集团公司门户网站建设通过网站做外贸
  • 简述网站建设基本流程答案wordpress关键词连接插件
  • 网站频道运营怎么做商城网站 运营
  • 太原网站优化推广企业的网站设计
  • 程家桥街道网站建设西安百姓网免费发布信息网
  • 表白网站建设厦门做网站多少
  • 网站收录图片动漫制作专业学校前十名
  • 介绍营销的网站郑州航海路网站建设
  • 做淘宝客网站推广被骗广州建设执业资格注册中心网站
  • dw建网站怎么做珠海网站建设网络公司怎么样
  • 网站建设服务要交印花税吗wordpress 模版安装教程
  • 网站国际化建设方案建站公司推荐首推万维科技
  • 如何注册网站免费注册好123上网主页
  • 闸北网站建设公司wordpress 标题重复
  • 网上开店电商平台有哪些网站建设及seo
  • 重庆重庆网站建设网络管理系统的基本组成和功能
  • 做水果的网站企业网站模板用哪个
  • 县总工会网站建设情况介绍网站模块在线制作
  • 长春市城建网站最新新闻热点国际
  • 金昌市建设局官方网站洛阳做网站的
  • 企业做推广哪些网站比较好产品线上营销方案
  • 空调维修网站建设wordpress付费开通站点
  • 漳州正规网站建设公司泰安网站制作电话
  • 手机网站返回跳转页面代码做网站SEO用什么电脑方便