本文是读《Spring Boot2精髓-从构建小系统到架构分布式大系统》的读书笔记。
前面作者讲的是Spring Boot的基础知识
从这一章开始,将介绍与Spring Boot相关的分布式技术
10.1 REST简介
Spring Boot,以及配套的负载均衡工具 Nginx、 Apache , 还有性能监控工具等,可伸缩性和性能都非常优秀。
“Web即应用平台”,RESTful风格的接口使用广泛。
- 资源( Resources)
URI(统一资源标识符〉
URL(统一资源定位符〉 - 表现层( Representation)
- 状态转化( State Transfer)
客户端用到的手段只能是 HTTP 协议。具体来说, HTTP 协议里有 5 个常用的表示操作方
式的动词 : GET 、 POST 、 PUT 、 DELETE 、 PATCH 。 它们分别对应 5 种基本操作: GET 用来获取资源, POST 用来新建资源(也可以用于更新资源) , PUT 用来更新资源, DELETE 用来删除资源, PATCH 用来更新资源的部分属性。
REST风格的架构
. 使用“ api ” 作为 Web 上下文:
. 增加版本标识 :
. 标识资源 :
. REST 中的 HTTP Method;
. REST 中的 HTTP Status 。
使用“API”作为上下文
建议使用“ api”作为上下文,如 :
http://192 . 168 . 0 . 1/api
也有的使用“ api ”作为二级域名 :
http://api.xxxx.com
增加一个版本标识
http://192 . 168 . 0 . 1/api/v1.1
标识资源
http://192 . 168 . 0 . 1/api/v1.1/user
确定HTTP Method
在 REST 中, HTTP Method 常常对应以下含义:
POST ,代表增加资源;
PUT ,代表更改资源,客户端提供需完整的资源属性:
GET ,代表查询资源;
PATCH ,更新资源,客户端提供仅需要更改的资源属性;
DELETE,通常用于删除资源;
HEAD ,类似 GET ,但仅仅只有 HTTP 头信息,头信息包含了 需要查找的信息:
OPTIONS ,用于获取 URI 所支持的方法,响应信息会在 HTTP 头中包含一个名为“ Allow ”
的头,值是所支持的方法,如“ GET 、 POST '’ 。
在业务系统中,删除往往并不是指的物理删除,而是逻辑删除,资源通常仍然在数据库
中,只是状态设置为删除状态 。
确定HTTP Status
REST VS. WebService
REST--------轻量级的架构
WebService----------重量级架构
10.2 Spring Boot集成REST
集成REST
只要 spring-boot-starter-web 依赖在 porn 中,即自动支持 REST:
@RestController
注解@RestController 用于描述REST 服务,相当于@Controller 和@ResponseBody 的组合。以下两个例子是等价的:
REST Client
- RestTemplate
Spring Boot 提供了 RestTemplate 来辅助发起一个 REST 请求,默认通过 JDK 自带的
HttpURLConnection 来作为底层 HTTP 消息的发送方式,使用 JackSon 来序列化服务器返回的JSON 数据。
除了使用ParameterizedTypeReference来保留泛型信息,也可以通过getForObject方法先映射成String ,然后通过 ObjectMapper 来转 为指定类型 ,可以 参考Jackson 来
了解 。
- 定制RestTemplate
创建一个配置类实现 RestT巳mplateCustornizer 接口的 customize 方法 :
10.3 Swagger UI
阻ST 也有一个工具 Swagger ,通过 Swagger 规范来描述 RESTFul 接口,通过 SwaggerUI 来显示和测试 RESTFul 接口。
集成 swagger
swagger规范
Swagger 规范是一个 JSON 格式的文件,包含项目基本信息及具体接口描述信息,可以在
static/swagger3 下创建一个 sample. json 文件
接口描述
查询参数描述
URI中的参数
HTTP头参数
表单参数
文件上传参数
整个请求体作为参数
10.4 模拟REST服务
可以在 OrderApi2Controller 上逐步添加业务实现来替代模拟实现 Spring MVC的 URL 路
径映射,路径带通配符的匹配优先级低于具体的 URL 路径匹配 。
本文深入探讨了SpringBoot与REST技术的结合应用,包括REST架构原则、SpringBoot集成REST的方法、SwaggerUI的使用以及如何模拟REST服务。文章详细介绍了RESTful接口设计、HTTP方法与状态码的使用,同时提供了SpringBoot集成REST的具体步骤。


被折叠的 条评论
为什么被折叠?



