ASP.NET Web API中实现版本
一般来说,api 接口是提供给其他系统或是其他公司使用,不能随意频繁的变更。然而,需求和业务不断变化,接口和参数也会发生相应的变化。如果直接对原来的接口进行修改,势必会影响线其他系统的正常运行。这就必须对api 接口进行有效的版本控制。
例如,添加用户的接口,由于业务需求变化,接口的字段属性也发生了变化而且可能和之前的功能不兼容。为了保证原有的接口调用方不受影响,只能重新定义一个新的接口。
http://localhost:8080/api/v1/user
http://localhost:8080/api/v2/user
在ASP.NET Web API中,当我们的API发生改变,就涉及到版本问题了。如何实现API的版本呢?
通过路由设置,不同的路由,不同的版本,不同的controller。
//带版本号的路由控制config.Routes.MapHttpRoute("DefaultVersionApi", "api/{version}/{module}/{controller}/{action}");//将自定义Action选择器替换系统默认config.Services.Replace(typeof(IHttpActionSelector), new CustomActionSelector());
获取接口调用版本号
/// <summary>/// 获取接口调用版本号/// </summary>/// <returns>接口调用版本号</returns>protected int GetApiVersionNo(){try{var versionStr = RequestContext.RouteData.Values["version"];var tmpArray = versionStr?.ToString().ToLower().Replace("v", "").Split('.');if (tmpArray == null || tmpArray.Length == 0)return 0;var tmpStr = tmpArray[0];tmpStr = tmpArray.Skip(1).Aggregate(tmpStr, (current, v) => current + v.PadLeft(3, '0'));tmpStr = tmpStr.PadRight(7, '0');int versionInt;return int.TryParse(tmpStr, out versionInt) ? versionInt : 0;}catch{return 0;}}
if (!exAccounts.Contains(info.Account) && GetApiVersionNo() < (int)VersionNumber.Version210)throw new CustomException("登录失败,请下载最新版登录!", "E100011");
ASP.NET Web API中实现版本相关推荐
- ASP.NET Web API中实现版本的几种方式
在ASP.NET Web API中,当我们的API发生改变,就涉及到版本问题了.如何实现API的版本呢? 1.通过路由设置版本 最简单的一种方式是通过路由设置,不同的路由,不同的版本,不同的contr ...
- 监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标
回顾 在<监控系统简介:使用 Prometheus 与 Grafana>一文中,我们了解了什么是监控系统,Prometheus 这一监控工具及它提供的数据类型.PromQL 以及 Graf ...
- (四)Asp.net web api中的坑-【api的返回值】
(四)Asp.net web api中的坑-[api的返回值] 原文:(四)Asp.net web api中的坑-[api的返回值] void无返回值 IHttpActionResult HttpRe ...
- ASP.NET Web API中的参数绑定总结
ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...
- 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.NET Web API中的HTTP Cookie 本文引自:http://www.asp.net/web-api ...
- ASP.NET Web API中的Controller
虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要 ...
- 利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
在Asp.net Web API中,对业务数据的分页查询处理是一个非常常见的接口,我们需要在查询条件对象中,定义好相应业务的查询参数,排序信息,请求记录数和每页大小信息等内容,根据这些查询信息,我们在 ...
- 在ASP.NET Web API中返回错误的最佳实践
本文翻译自:Best practice to return errors in ASP.NET Web API I have concerns on the way that we returns e ...
- 在ASP.NET Web API中使用OData的Action和Function
本篇体验OData的Action和Function功能.上下文信息参考"ASP.NET Web API基于OData的增删改查,以及处理实体间关系".在本文之前,我存在的疑惑包括: ...
最新文章
- leetcode-45 跳跃游戏II
- 极限编程 (Extreme Programming) - 迭代计划 (Iterative Planning)
- 原生js实现preAll和nextAll方法
- 【CyberSecurityLearning 34】Linux脚本编写(Shell脚本)
- CentOS FTP服务(vsftpd)配置
- python取列表中位数_Python如何获取列表(List)的中位数
- 【Flink】双亲委派模型与Flink的类加载策略 child-first parent-first
- vue.js java php_听说Java程序员喜欢AngularJS,PHP程序员喜欢Vue.js
- CSDN Cookbook by Eric
- Bailian2899 Bailian3242 矩阵交换行【矩阵】
- jquery页面跳转带cookie_python socket编程:实现redirect函数、cookie和session
- VS2013中安装配置和使用Boost库
- JAVA笔记自整理(Java)
- 关于ESD的一些知识
- 微软:今天起加速推广Windows 11,让更多设备免费升级
- 蓝牙耳机什么样式最舒服?推荐一款好用的蓝牙耳机
- jquery.fly.js实现添加购物车效果、实现抛物线运动
- nacos 一直访问本地地址
- 黑盒测试技术中的等价类划分法、边界值分析法、因果图法和决策表法进行测试用例设计
- 怎么在oracle里执行sql语句,在Oracle中执行动态SQL的几种方法
热门文章
- 常胜游戏系列:填满硬币
- icewm使用心得[转]
- c++ int 转 short_C/C++结构体内存对齐
- C#将unix时间戳转换成.net的DateTime类型的代码
- 运行tomcat报Exception in thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
- Tomcat - Tomcat安装
- 【转】Linux中断处理学习笔记
- 用SmarterFox替换Internet Explorer的“加速器”
- twitter批量取消关注_如何在Twitter上取消阻止“潜在敏感内容”
- linux下设备或资源忙,linux删除文件目录 目录设备或资源忙怎么办