10 REST

本文深入探讨了SpringBoot与REST技术的结合应用,包括REST架构原则、SpringBoot集成REST的方法、SwaggerUI的使用以及如何模拟REST服务。文章详细介绍了RESTful接口设计、HTTP方法与状态码的使用,同时提供了SpringBoot集成REST的具体步骤。

本文是读《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 路径匹配 。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值