1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

spring-boot之webflux简单入门 - 中

前言

昨天我们通过一个简单实例,演示了webfluxWebMVC的简单区别,同时也展示了webflux的基本工作流程,今天我来继续学习webflux的相关知识。

今天我们学习的重点是webflux的客户端,我们想通过webflux客户端来了解webflux的相关基础知识,包括接口请求方式、响应类别、传参等

webflux客户端

简单示例

webflux的客户端用起来很方便,也很简单,我们先看这样一段代码:

 WebClient client = WebClient.create("http://localhost:8999");
        Mono<String> stringMono = client.get()
                .uri("/webflux/hi")
                .attribute("name", "syske")
                .accept(MediaType.APPLICATION_JSON)
                .retrieve()
                .bodyToMono(String.class);
        String block = stringMono.block();
        System.out.println("返回结果:" + block);

第一行代码就是实例化一个weClient对象,需要注意的是,这里实例化的时候,也可以不指定服务器地址,如果不指定服务器地址的话,就需要我们在uri方法中指定完整的接口地址:

WebClient client = WebClient.create();
        Mono<String> stringMono = client.get()
                .uri("http://localhost:8999/webflux/hi")
                ···

如果不指定服务器地址,且uri填写相对接口地址,则会报如下错误信息:

示例讲解

下面我们就来详细解释下上面webfluxClient的代码。

请求类型

client.get()表示创建一个get请求对象(本质上是一个RequestHeadersUriSpec对象),他还支持postputdeleteoptions,也就是我们restful的所有协议。

对于不同的请求类型,我们配置的请求参数是不一样的,但是uri方法都是通用的。

get客户端配置

当然,还有很多配置项是不一样的,在上面的示例中,我们是get请求,我们可以配置如下参数:

  • 请求地址中的参数:也就是url中的参数,可以通过attributes方法设置
Mono<String> stringMono = client.get()
                .uri("/webflux/hi")
                .attribute("name", "syske")
                ···
  • cookie信息
Mono<String> stringMono = client.get()
                .uri("/webflux/hi")
                .cookie("syske", "yyds")
                ···
  • 响应头的字符编码
Mono<String> stringMono = client.get()
                .uri("/webflux/hi")
                .acceptCharset(Charset.defaultCharset())
                ···
  • 设置响应类型

也就是我们常用的媒体类型,包括application/jsonapplication/pdftext/htmlimage/jpeg等待

Mono<String> stringMono = client.get()
                .uri("/webflux/hi")
				.accept(MediaType.APPLICATION_JSON)
				···
  • 获取响应设置对象
Mono<String> stringMono = client.get()
                .uri("/webflux/hi")
				.retrieve()
				···
  • 配置响应对象

这里配置的类型要与服务器端对应,否则会在类型转换时报错

Mono<String> stringMono = client.get()
                .uri("/webflux/hi")
				.bodyToMono(String.class);
				···
  • 执行调用,获取响应数据

经过我的测试,我发现真正调用服务器是在我们执行block方法之后,之前的操作都是未来配置客户端请求数据。

String block = stringMono.block();
post客户端配置

对于post配置,出来我们前面和get一样的配置外(get的都支持),它还支持以下参数:

  • 设置请求头类型
Mono<String> stringMono2 = client.post()                
        .uri("/webflux/hi")                
        .acceptCharset(Charset.defaultCharset())                
        .header("token:1234567")				
        .contentType(MediaType.APPLICATION_JSON)
  • 设置其他请求头信息
Mono<String> stringMono2 = client.post()                
    .uri("/webflux/hi")				
    .headers(httpHeaders -> {                    
        httpHeaders.add(HttpHeaders.ACCEPT_CHARSET, "UTF-8");                
    })

好了,客户端的相关配置就先到这里吧,下面简单测试下。

测试

下面我们分别运行getpost两种客户端,访问我们的两个接口,看下效果。

首选是我们的接口,第一个是get接口,第二个是post接口:

接口路由配置

测试代码如下

 public static void main(String[] args) {        
   WebClient client = WebClient.create("http://localhost:8999");        
   Mono<String> stringMono = client.get()                
       .uri("/webflux/hi")                
       .acceptCharset(Charset.defaultCharset())                
       .header("token:1234567")                
       .cookie("syske", "yyds")                
       .attribute("name", "syske")                
       .accept(MediaType.APPLICATION_JSON)                
       .retrieve()                
       .bodyToMono(String.class);        
       String block = stringMono.block();        
       System.out.println("返回结果:" + block);   

   Mono<String> stringMono2 = client.post()                
       .uri("/webflux/hi2")                
       .acceptCharset(Charset.defaultCharset())                
       .header("token:1234567")                
       .headers(httpHeaders -> {                    
           httpHeaders.add(HttpHeaders.ACCEPT_CHARSET, "UTF-8");                
       })                
       .contentType(MediaType.APPLICATION_JSON)                
       .cookie("syske", "yyds")                
       .attribute("name", "syske")                
       .accept(MediaType.APPLICATION_JSON)                
       .retrieve()                
       .bodyToMono(String.class);        
   String block1 = stringMono2.block();        
   System.out.println("block1" + block1);    
 }

然后运行下看看:

可以看到我们前面设置的数据都可以可到,比如cookiecontentType

下面是运行结果:

总结

今天时间有点紧张,搞了一天企业微信isv环境,现在环境还是时好时坏,而且中午时间也比较紧张,所以webflux的相关内容也就没梳理完,不过webfluxClient也算基本上分享完了,明天继续来分享webflux其他相关知识。

posted @ 2021-07-29 22:36  云中志  阅读(702)  评论(0编辑  收藏  举报