第11章 开发反应式API

2024-02-24 02:32
文章标签 开发 api 反应式

本文主要是介绍第11章 开发反应式API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 使用Spring WebFlux

时间轮循机制(event looping)
异步Web框架借助事件轮训机制能够以更少的线程处理更多的请求
非阻塞、异步的Web框架

1.1 Spring WebFlux简介

在这里插入图片描述

1.2 编写反应式控制器

返回单个值
使用RxJava类型
Observable
Single
Completable 等价于Reactor中的Mono
Flowable
实现输入的反应式

2.定义函数式请求处理器

使用Spring的函数式编程模型编写API会涉及4个主要的类型:
•RequestPredicate:声明要处理的请求类型。
•RouterFunction:声明如何将请求路由到处理器代码中。
•ServerRequest:代表一个HTTP请求,包括对请求头和请求体的访问。
•ServerResponse:代表一个HTTP响应,包括响应头和响应体信息。

3.测试反应控制器

WebTestClient

3.1 测试GET请求
3.2 测试POST请求
3.3 使用实时服务器进行测试

4.反应式消费REST API

WebClient
可以作为RestTemplate的反应式版本
能够让我们请求外部API时发送和接收反应式类型
有一个流畅(fluent)的构建者风格接口
WebClient的通用使用模式如下:
•创建WebClient实例(或注入WebClient bean);
•指定要发送请求的HTTP方法;
•指定请求中URI和头信息;
•提交请求;
•消费响应。

4.1 获取资源

bodyToMono()
bodyToFlux()
非常重要的一点就是要订阅结果所形成的Flux,否则请求将始终不会发送。
使用基础URI发送请求
因为WebClient已经创建好了,所以我们可以通过get()方法直接使用它。对于URI来说,我们只需要调用uri()指定相对于基础URI的相对路径即可。
对长时间运行的请求进行超时处理
timeout()方法

4.2 发送资源

body()方法
syncBody()

4.3 删除资源

delete()方法

4.4 处理错误

onStatus()
onStatus()接受两个函数:
一个断言函数用来匹配HTTP状态;
另一个函数会得到ClientResponse对象,并返回Mono。
WebClientResponseException最大的问题在于它无法明确指出导致Mono失败的原因是什么

4.5 交换请求

exchange()和retrieve()
差异和相似

5. 保护反应式Web API

Servlet Filter
Spring Security

5.1 配置反应式Web应用的安全性

WebSecurityConfigurerAdapter配置类
@EnableWebSecurity注解
HttpSecurity对象
Ant风格的通配符

@EnableWebFluxSecurity注解
ServerHttpSecurity对象
pathMatchers()

5.2 配置反应式的用户详情服务

这篇关于第11章 开发反应式API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/740677

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD