当前位置: 首页 > news >正文

聊城手机网站郑州微信网站制作

聊城手机网站,郑州微信网站制作,做秩序册的网站,微信网站html5第6章 构建 RESTful 服务 6.1 RESTful 简介 6.2 构建 RESTful 应用接口 6.3 使用 Swagger 生成 Web API 文档 6.4 实战#xff1a;实现 Web API 版本控制 6.5 拓展#xff1a;如何实现 Web API 版本控制#xff0c;同时兼容无版本控制的原始接口#xff1f; 6.5 拓展#… 第6章 构建 RESTful 服务 6.1 RESTful 简介 6.2 构建 RESTful 应用接口 6.3 使用 Swagger 生成 Web API 文档 6.4 实战实现 Web API 版本控制 6.5 拓展如何实现 Web API 版本控制同时兼容无版本控制的原始接口 6.5 拓展如何实现 Web API 版本控制同时兼容无版本控制的原始接口 〇、背景 在上一节 6.4 实战实现 Web API 版本控制 中我们实现了 Web API 版本控制但是有一个问题我们在原始版本上增加了版本控制之后假设原始版本没有版本号现在做版本控制之后V1对应了原始版本可以正常访问有版本号的接口但是却无法访问没有版本号的原始接口。如下 原始版本无版本控制删除订单接口http://localhost:8080/api/order/delete/20011无法返回数据 原始版本无版本控制获取订单详情接口http://localhost:8080/api/order/detail/20011无法返回数据 一、需求 假设原始 Web API 接口没有实现版本控制那么如何升级接口才能在实现版本控制的同时无版本控制的原始接口不受影响。 1、背景 假设 原始接口无版本控制 和 升级后的接口有版本控制 如下所示。 原始接口无版本控制 api/order/接口名称 升级后的接口有版本控制 api/v1/order/接口名称 api/v2/order/接口名称 2、核心需求 1升级接口进行 Web API 版本控制。 2原始接口可以正常访问不受接口升级影响。 3原始接口和升级后的V1接口等价即api/order/接口名称和api/v1/order/接口名称等价。 二、解决方案 Spring Boot 对 RESTful 的支持非常全面因而实现 RESTful API 非常简单同样对于 API 版本控制也有相应的实现方案实现步骤如下 1、API版本控制配置 1创建自定义的 ApiVersion 注解。 2创建自定义 URL 匹配规则 ApiVersionCondition 类实现 RequestCondition 接口。 3创建自定义的映射处理程序 ApiRequestMappingHandlerMapping 类继承 RequestMappingHandlerMapping 类。 4创建 WebMvcRegistrationsConfig 配置类实现 WebMvcRegistrations 接口将自定义的映射处理程序 ApiRequestMappingHandlerMapping 注册到系统中。 2、配置实现接口 编写测试的控制器实现相关接口的测试。 假设升级后的接口为V1版本1、V2版本2。 实现方法 原始接口原始接口不需要做任何操作。保证原始接口不受任何影响V1接口V1接口不需要实现任何接口直接继承原始接口然后添加版本注解ApiVersion 和 URL中添加版本标志{version} 实现版本控制即可。保证原始接口和升级后的V1接口等价V2接口V2接口根据业务需求的变化实现相关接口然后添加版本注解ApiVersion 和 URL中添加版本标志{version} 实现版本控制。 三、具体实现 1、API版本控制配置 关于 API版本控制配置可以直接参考上一节 6.4 实战实现 Web API 版本控制 。 2、配置实现接口 配置完成之后接下来编写测试的控制器Controller实现相关接口的测试。在 Controller 目录下分别创建 OrderV1Controller 和 OrderV2Controller原始接口控制器 OrderController 不做任何改动。示例代码如下 OrderController.java package com.example.restfulproject.controller;import com.example.restfulproject.comm.utils.JSONResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** 原始版本的接口定义*/ RestController RequestMapping(/api/order) public class OrderController {GetMapping(/delete/{orderId})public JSONResult deleteOrderById(PathVariable String orderId) {System.out.println(V1 删除订单成功 orderId);return JSONResult.ok(V1 删除订单成功);}GetMapping(/detail/{orderId})public JSONResult queryOrderById(PathVariable String orderId) {System.out.println(V1 获取订单详情成功 orderId);return JSONResult.ok(V1 获取订单详情成功);} } OrderV1Controller.java package com.example.restfulproject.controller;import com.example.restfulproject.comm.annotation.ApiVersion; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** V1 版本的接口定义*/ ApiVersion(value 1) RestController RequestMapping(/api/{version}/order) public class OrderV1Controller extends OrderController { } OrderV2Controller.java package com.example.restfulproject.controller;import com.example.restfulproject.comm.annotation.ApiVersion; import com.example.restfulproject.comm.utils.JSONResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** V2 版本的接口定义*/ ApiVersion(value 2) RestController RequestMapping(/api/{version}/order) public class OrderV2Controller {GetMapping(/detail/{orderId})public JSONResult queryOrderById(PathVariable String orderId) {System.out.println(V2 获取订单详情成功 orderId);return JSONResult.ok(V2 获取订单详情成功);}GetMapping(/list)public JSONResult list() {System.out.println(V2 新增list订单列表接口);return JSONResult.ok(200, V2 新增list订单列表接口);} } 3、验证测试 启动项目查看版本控制是否生效。同时检查无版本控制的原始接口是否不受影响。 1删除订单接口 原始接口无版本控制http://localhost:8080/api/order/delete/20011 V1接口有版本控制http://localhost:8080/api/v1/order/delete/20011 V2接口有版本控制http://localhost:8080/api/v2/order/delete/20011 2获取订单详情接口 原始接口无版本控制http://localhost:8080/api/order/detail/20011 V1接口有版本控制http://localhost:8080/api/v1/order/detail/20011 V2接口有版本控制http://localhost:8080/api/v2/order/detail/20011 3新增订单列表接口 原始接口无版本控制http://localhost:8080/api/order/list V1接口有版本控制http://localhost:8080/api/v1/order/list V2接口有版本控制http://localhost:8080/api/v2/order/list 来源《Spring Boot 从入门到实战》学习笔记
http://www.w-s-a.com/news/901114/

相关文章:

  • 开一个小程序要多少钱宁波seo网络推广外包报价
  • 网站备案最新备案号电子商务网站建设的规章制度
  • wordpress制作单页网站导航页面鞍山信息港招聘信息
  • 屏蔽ip地址访问网站自己做衣服的网站
  • 网站建设 域名业务 邮箱哪里有网站建设中心
  • 免费网站赚钱重庆建设摩托车股份有限公司
  • 合肥水运建设工程监理网站自己买服务器能在wordpress建网站
  • wordpress积分商城主题整站seo排名要多少钱
  • 鲜花网站建设的利息分析网站设计与制作专业
  • 深圳网站建设排名做网站的公司高创
  • 杭州哪家做外贸网站全国物流网站有哪些平台
  • 企业网站建设个人博客鞍山晟宇网站建设
  • 广东省自然资源厅网站h5移动端网站模板下载
  • 网站建设和安全管理制度云南九泰建设工程有限公司官方网站
  • 网站的关键词和描述做外贸家纺资料网站
  • 绥化市建设工程网站招投标地址链接怎么生成
  • 网站制作设计发展前景网页链接制作生成二维码
  • 廊坊哪里有制作手机网站的企业网站建设费用财务处理
  • 手机网站建设书籍工商咨询服务
  • 麻花星空影视传媒制作公司网站美食网站网站建设定位
  • 网站的切图是谁来做学会网站 建设
  • 交通局网站建设方案答辩ppt模板免费下载 素材
  • 个人摄影网站推介网手机版
  • 有哪些免费的视频网站网站开发和竞价
  • 学校网站如何做广州商城型网站建设
  • 微网站建设哪家便宜易优建站系统
  • 推荐做木工的视频网站毕业设计做的网站抄袭
  • 网站导航页面制作wordpress调用文章阅读量
  • app小程序网站开发品牌购物网站十大排名
  • 用wordpress做购物网站龙岩品牌设计