范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringWebFlux使用函数式编程之RouterFunction(2)

  环境:Springboot2.4.12
  本篇主要内容: RouterFunction的使用 概述
  路由器函数用于将请求路由到相应的HandlerFunction 。通常情况下,你不需要自己编写路由器函数,而是使用RouterFunctions 类中的方法来创建一个。RouterFunctions.route() (无参数)为创建路由器函数提供了一个流畅的构建器,而RouterFunctions.route(RequestPredicate, HandlerFunction) 提供了创建路由器的直接方法。
  通常,建议使用route()构建器,因为它为典型的映射场景提供了方便的快捷方式,而不需要难以发现的静态导入。例如,路由器函数构建器提供了方法GET(String, HandlerFunction) 来为GET请求创建映射;和POST(String, HandlerFunction) 用于POST。
  除了基于HTTP方法的映射之外,路由构建器还提供了一种在映射到请求时引入附加谓词的方法。对于每个HTTP方法,都有一个以RequestPredicate 作为参数的重载变体,尽管可以表示附加的约束。谓词Predicates
  你可以编写自己的RequestPredicate ,但RequestPredites 类提供了常用的实现,基于请求路径、HTTP方法、内容类型等。以下示例使用请求谓词根据Accept标头创建约束:RouterFunction route = RouterFunctions.route()     .GET("/hello-world", accept(MediaType.TEXT_PLAIN),         request -> ServerResponse.ok().bodyValue("Hello World")).build();
  你可以使用以下命令将多个请求谓词组合在一起:RequestPredicate.and(RequestPredicate)   // 两者必须匹配 RequestPredicate.or(RequestPredicate)  // 两者都可以匹配
  RequestPredicates 中的许多谓词都是组合的。例如,RequestPredicates.GET(String) 由RequestPredicates.method(HttpMethod) 和RequestPredicates.path(String) 组合而成。上面显示的示例还使用了两个请求谓词,因为构建器使用RequestPredicates.GET 内部,并用accept谓词组合它。路由Routes
  路由器函数按顺序计算:如果第一个路由不匹配,则计算第二个路由,依此类推。因此,在一般路由之前声明更具体的路由是有意义的。这在将路由器函数注册为Spring bean时也很重要,稍后将对此进行描述。注意,此行为不同于基于注释的编程模型,后者自动选择"最特定的"控制器方法。
  当使用路由器函数构建器时,所有定义的路由被组合到一个RouterFunction中,该RouterFunction从build()返回。还有其他方法可以将多个路由器功能组合在一起:add(RouterFunction) on the RouterFunctions.route() builder RouterFunction.and(RouterFunction) RouterFunction.andRoute(RequestPredicate, HandlerFunction) — shortcut for RouterFunction.and() with nested RouterFunctions.route().
  下面的例子展示了四条路由的组合:import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.web.reactive.function.server.RequestPredicates.*;  PersonRepository repository = ... PersonHandler handler = new PersonHandler(repository);  RouterFunction otherRoute = ...  RouterFunction route = route()     .GET("/person/{id}", accept(APPLICATION_JSON), handler::getPerson) // 1     .GET("/person", accept(APPLICATION_JSON), handler::listPeople)  // 2     .POST("/person", handler::createPerson)  // 3     .add(otherRoute)  // 4     .build();带有匹配JSON的Accept头的GET /person/{id}被路由到 PersonHandler.getPerson 带有与JSON匹配的Accept头的GET /person被路由到PersonHandler.listPeople 没有附加谓词的POST /person被映射到PersonHandler.createPerson otherRoute是一个在别处创建的路由器函数,并添加到构建的路由中。嵌套路由Nested Routes
  一组路由器函数通常具有一个共享谓词,例如共享路径。在上面的示例中,共享谓词将是一个与/person匹配的路径谓词,由三条路由使用。在使用注释时,可以通过使用映射到/person的类型级@RequestMapping 注释来消除这种重复。在WebFlux.Fn,路径谓词可以通过路由器函数构建器上的路径方法共享。例如,上面例子的最后几行可以通过使用嵌套路由通过以下方式进行改进:RouterFunction route = route()     .path("/person", builder -> builder // 1         .GET("/{id}", accept(APPLICATION_JSON), handler::getPerson)         .GET(accept(APPLICATION_JSON), handler::listPeople)         .POST(handler::createPerson))     .build();注意,path的第二个参数是接受路由器构建器的消费者。
  尽管基于路径的嵌套是最常见的,但是你可以通过在构建器上使用嵌套方法来嵌套任何类型的谓词。上面的内容仍然以共享的Accept-header谓词的形式包含了一些重复。我们可以通过使用nest方法和accept来进一步改进:RouterFunction route = route()     .path("/person", b1 -> b1         .nest(accept(APPLICATION_JSON), b2 -> b2             .GET("/{id}", handler::getPerson)             .GET(handler::listPeople))         .POST(handler::createPerson))     .build();
  总结: 路由函数中RouteFunction 的使用嵌套路由的使用
  Spring WebFlux使用函数式编程之HandlerFunction(1)
  Spring WebFlux请求处理流程
  一文带你彻底理解Spring WebFlux的工作原理
  SpringBoot WebFlux整合Spring Security进行权限认证
  SpringBoot WebFlux整合MongoDB实现CRUD及分页功能
  Spring WebFlux入门实例并整合数据库实现基本的增删改查
  SpringBoot WebFlux整合R2DBC实现数据库反应式编程

不负韶华不负爱不负韶华不负爱吴成田岁月不居,时节如流,不知不觉来到南陈集苏通实验学校已是一月有余。从报名考试到走上岗位,一系列的流程下来,内心一直比较平静,来到这里,有种不是自己选择命运而是被命生活在于不断地感应许久没有去野外探寻了,这是城里生活的不足之处,不似在农家时,出门就可以到四野闲逛一番,特别是在这样的秋忙时节,孩童的时光是多么令人怀念呀,而这短暂的美好时光是自由的无忧无虑的,虽然打开了qq里面的说说,找到了陌生的自己丢弃了好多年,找寻了许多次的密码,时间过去了漫漫岁月,一直挂手机上的企鹅,似乎还在倔强着,曾经网吧的激情岁月,零零星星的多愁善感,一片凋零的回忆,极速发展的社会,加速了他们封尘的记人民日报金句摘录20221017坚持每日读报,把日报读薄,把最新的资讯,摘录出来做分享。唯有矢志不渝,笃行不怠方能不负时代,不负人民。实践发展永无止境,理论创新永无止境。时代号角,铿锵吹响。振奋人心,倍增力量!人邵丽大河上下碎碎念一hr与许多年后看黄河写黄河成为我职业生涯的一部分相比,第一次看见黄河简直觉得非常寒伧。那时候还不知道体面这个词儿,其实即使知道了也不晓得该怎么用圣人说,体面是吃饱喝足之后才能得到能不能成为夫妻,早已注定了文夏莫01卷首语缘分,是很玄妙的东西,像风像雾,来时能感受到它的存在,散去的时候却无论如何都抓不住。人生路很长,人来人往,有些人会在心里记一辈子而有些人,悄悄不知不觉离开了,再也不怀疑一旦产生,罪名即已成立真相,是脆弱易伤的东西。假如越来越多的人,用坚定嘹亮的嗓音表达他们所怀疑的现象,即便那是错的假的,也会成真而那毋庸置疑的事实,则会变成谎言,而且迟早会变成为伤害他人的借口。你相信哪唯美浪漫原创文字撷萃(5)47在前世,我是个爱花的樵夫,院子里种满了各种花草,没有名贵的品种,大都是从溪边路旁山涧峰顶采来,黄的粉的红的紫的绿的花或草散发着淡淡的清香,就像我不曾躁动的心平淡而柔和。穿行在花如果你放不下一个人,不妨看看这段话秋色盈盈,时光斑驳,山海寂寂,有一种遇见,叫相见恨晚有一种缘分,叫有缘无分。每个人心里都有一段难以忘怀的往事,也会有一个放不下的人。我们之所以放不下某个人,不是因为他有多好,而是因对吃饭的感想对吃饭的感想一天,看到一则消息一外卖小哥由于迟到一分钟,而被点外卖的人拒收,并发生了纠纷。细思之,无限感慨。感慨一吃饭的代价有点大。现在好多的年轻人,为了快节奏的生活,喜欢或已习惯作文真题汇总2022上半年阅读下面的材料,根据要求写作。2019年8月9日,华为发布了其自研的鸿蒙操作系统,鸿蒙来源于上古传说,是盘古开天地之前的混沌元气。其实,这之前华为发布的多款产品的命名
宝宝流鼻涕,泡澡水安排上艾,对我来说太重要了,我的小菜地全是艾。特别是冬天,除了宝宝感冒用,我也用来泡脚。这两天天气变化无常,二宝宝晚上睡觉踢被子,现在流鼻涕了。今天姜艾水给她安排上。1。首先取适量姜,洗肚脐里的泥能不能用手抠掉?其实是可以的,但要注意方法肚脐眼其实是胎儿和母亲连接的一个通道,母亲将自身的养分通过肚脐传递给胎儿,以此来满足胎儿的营养需求。但是,胎儿离开母体后,就需要将这个通道切断,切断后,该位置就会自行恢复,从而形成101岁男性老寿星养生经验介绍我的外祖父活到101岁时,而且老人家没有因为身体有大病大灾受到任何病变的折磨,也没有在医院长期住院的情况下,在家里安详地离开我们家人。在此本人用我外祖父的生活养生经历向各位友友介绍一处要保护,一处要挨打护好脊背,避免损伤阳气。中医讲,后背正中的脊柱,是人体两条最大经脉之一的督脉必经之地,脊柱两旁的足太阳膀胱经与五脏六腑联系密切,若背部保暖不好,风寒之邪极易通过背部侵入,损伤阳气而喝牛奶到底是养胃还是伤胃?中医两类人群就别尝试了,适得其反有的人说牛奶养胃,可以保护我们的胃粘膜,所以经常喝牛奶,是对胃有好处的,但真的是这样吗?牛奶中含有的丰富蛋白质是可以吸附到胃粘膜上的,确实是可以起到胃粘膜的保护作用,当胃分泌胃酸过一年之计在于春。养生保健从春开始,养生保健大全因为人上了年纪之后,身体上所出现的问题也会越来越多,所以不少上了年纪的人都非常注重养生保健。养生保健的时候不仅可以通过保健品进行,还可以通过日常生活中的行为来达到养生保健的效果。并单日暴跌37创新低!东南亚滴滴美团Grab市值已蒸发220亿美元财联社(上海编辑牛占林)讯,美东时间周四,有东南亚滴滴美团之称的Grab股价大跌37,刷新历史新低,自去年年底上市以来,其市值已蒸发220亿美元。这家东南亚的网约车和快递巨头自上市早餐食谱大全及做法大全(12)台式香肠青椒披萨用料9寸披萨饼底1个马苏里拉芝士碎片8090克亨氏番茄酱1勺黄油5克青椒半根台式香肠1根或者1根半做法由于没时间自己做饼底,我买了现成的!解冻之前记得要撕开包装袋再曝足协降薪遭到反对!惹怒国足球员大不了去东南亚,学习韩国人随着东南亚足球的进步,以及中国男足踢不过越南男足,让国内球迷开始关注东南亚国家队和联赛。新赛季新加坡联赛开打,首轮结束的一场比赛,狮城水手31击败港联队,韩国外援前锋金信煜收获个人超级育儿师重磅回归!报名参与节目录制,明星老师上门指导风靡世界,影响亿万父母,全球最成功的亲子真人秀闪亮回归!作为新手父母育儿0经验?面对淘气孩子束手无策!家有二胎三胎,无法平衡对孩子的爱教育理念不一致,家庭矛盾频发!超级育儿师携手资游记长青的龟山饿狼山长清的龟山饿狼山文姜苗林丁香路的东端就是龟山。从园博园地铁口出来走上大桥俯瞰,长清湖水色湛蓝,晨风荡起层层涟漪。千条万条的柳丝和枯黄的衰草依然是冬天的颜色,那扑面而来的风却有了春天