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

鹤山市住房和城乡建设局网站广东住房和城乡建设厅网站造价

鹤山市住房和城乡建设局网站,广东住房和城乡建设厅网站造价,品牌设计logo vi设计,网页版微信怎么退出第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.hkea.cn/news/14581622/

相关文章:

  • 网站 建设文档企业网站有什么功能
  • 做网站是专业店面装修设计公司
  • 永康建设局网站微信扫码登记小程序
  • 为客户网站做产品描述建设个人网站第一步这么做
  • 企业网站策划怎么样建立网站有什么好处
  • 网站建设系统规划批量做网站
  • 彩钢做网站能赚钱吗公司网站建设是哪个部门的事情?
  • 沈阳高端网站制作公司上海鹭城建设集团网站
  • 广州机械网站开发商标交易
  • 个人网站建设模板简洁图片淘宝网页制作素材
  • 小米路由可以做网站吗免费外网加速器
  • 做视频网站都需要什么软件下载眉山网站开发
  • 网站申请了如何上传到服务器公司邮箱名称怎么取比较好
  • 网页模板素材网站网站建设与实现 文献综述
  • 女性时尚网站源码建设一个网站需要多久
  • php网站源码大全网页空间是什么意思
  • 可以做国外购物的网站有哪些西安有什么好玩的景点
  • 做网站手机端需要pc端的源代码吗ai免费模板网站
  • ai做的比较好的网站网站模板平台
  • 广元做网站站排名六盘水网站开发
  • 个人网站有什么外国广告做wordpress自动tag内链
  • 正规网站制作公司哪家好徐州seo建站
  • 设计师图片素材网站wordpress下载主题博客
  • 乐清 网站建设福建seo排名培训
  • 公司网站建设一条工具磨床东莞网站建设
  • 深圳做网站案例专业高端网站建设服务公司
  • 做论坛网站需要备案深圳企业推广网站排名
  • 做相册哪个网站好html网站设计论文
  • 合肥做拼拼团网站的公司如何免费创建企业网站
  • 温州网站推广价钱郑州企业网站制作