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

学校网站建设目的与意义做网站需要购买网站空间吗

学校网站建设目的与意义,做网站需要购买网站空间吗,广西壮族自治区免费百度推广,网页游戏网站建设前言在后端Api的开发过程中,无法避免的会遇到接口迭代的过程,如何保证新老接口的共存和接口的向前的兼容呢,这时候就需要对Api进行版本的控制,那如何优雅的控制Api的版本呢#xff1f;开始Microsoft.AspNetCore.Mvc.Versioning 是一个微软官方推出的一个用于管理Api版本的包,配… 前言在后端Api的开发过程中,无法避免的会遇到接口迭代的过程,如何保证新老接口的共存和接口的向前的兼容呢,这时候就需要对Api进行版本的控制,那如何优雅的控制Api的版本呢开始Microsoft.AspNetCore.Mvc.Versioning 是一个微软官方推出的一个用于管理Api版本的包,配置简单,功能强大。 github地址.新建一个WebApi项目并通过命令引用包。Install-Package Microsoft.AspNetCore.Mvc.Versioning最新版本已经支持Core3.1项目结构如下在 Startup 的 ConfigureServices 中增加一下配置。services.AddApiVersioning(options {options.ReportApiVersions true; options.AssumeDefaultVersionWhenUnspecified true; options.DefaultApiVersion new ApiVersion(1, 0); }); ReportApiVersions:是否在请求头中返回受支持的版本信息。AssumeDefaultVersionWhenUnspecified:请求没有指明版本的情况下是否使用默认的版本。DefaultApiVersion:默认的版本号。通过QueryString进行版本控制分别在两个不同的Controller中添加一个获取版本信息的接口namespace version.Controllers.v1 {[ApiVersion(1.0)][ApiController][Route(api/[controller])]public class ValuesController : Controller{[HttpGet(version)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());} } namespace version.Controllers.v2 {[ApiVersion(2.0)][ApiController][Route(api/[controller])]public class ValuesController : Controller{[HttpGet(version)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());} } HttpContext.GetRequestedApiVersion().ToString() 是用于获取请求接口的版本信息。我们通过postman来请求这两个接口当我们没有给到具体请求哪个版本的时候会根据在ConfigureServices中配置的默认版本去执行。指定版本请求结果在响应头中会显示当前支持的所有的Api版本通过URL Path进行版本控制一般在Api开发中不会去QueryString的方式去进行版本控制而是使用URL路径段的方式来控制版本。修改两个Controller中的代码如下。namespace version.Controllers.v1 {[ApiVersion(1.0)][ApiController][Route(api/v{version:ApiVersion}/[controller])]public class ValuesController : Controller{[HttpGet(version)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());} } namespace version.Controllers.v2 {[ApiVersion(2.0)][ApiController][Route(api/v{version:ApiVersion}/[controller])]public class ValuesController : Controller{[HttpGet(version)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());} } 通过postman进行测试可以看到当我们使用指定的版本是可以正常访问的时候但是如果我们去掉了Api版本号就会抛出404,并不能像QueryString一样调用默认的Api版本因为URL Path的方式不允许隐式匹配设置的默认Api版本。所以必须申明所有的Api版本。且在请求Api同时必须带上Api版本号。通过Media Type进行版本控制我们还可以使用content-type来实现版本的控制修改ConfigureServices中的配置services.AddApiVersioning(options {options.ApiVersionReader new MediaTypeApiVersionReader();options.AssumeDefaultVersionWhenUnspecified true;options.ApiVersionSelector new CurrentImplementationApiVersionSelector(options);}); CurrentImplementationApiVersionSelector 如果没有在content-type中传递Api版本好,将默认匹配最新的Api版本分别修改两个Controllernamespace version.Controllers.v1 {[ApiVersion(1.0)][ApiController][Route(api/[controller])]public class ValuesController : Controller{[HttpGet(version)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());} } namespace version.Controllers.v2 {[ApiVersion(2.0)][ApiController][Route(api/[controller])]public class ValuesController : Controller{[HttpGet(version)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());} } 使用Postman测试通过自定义Headers进行版本控制修改ConfigureServices中的配置services.AddControllers(); services.AddApiVersioning(options {options.ReportApiVersions true;options.ApiVersionReader new HeaderApiVersionReader(api_version);options.AssumeDefaultVersionWhenUnspecified true;options.DefaultApiVersion new ApiVersion(1, 0); }); api_version 是你Headers中Key的名字。使用Postman测试特性当哪个Api版本不在更新,就需要弃用掉这个版本。当Deprecated值为true时说明该Api版本已经已经弃用,但是弃用不代表不能请求。只是会在响应头中告知次版本已经已经弃用。namespace version.Controllers.v1 {[ApiVersion(1.0,Deprecated true)][ApiController][Route(api/[controller])]public class ValuesController : Controller{[HttpGet(version)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());} } 项目总有一些功能是不需要版本的控制所以我们希望它不受版本控制。可以添加[ApiVersionNeutral]特性使Api支持版本控制。namespace version.Controllers.v1 {[ApiVersionNeutral][ApiController][Route(api/[controller])]public class ValuesController : Controller{[HttpGet(version)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());} } MapToApiVersion 可以将单个Api归类于任何版本。在一个Controller中可以存在多个版本的Api。我们可以配合Deprecated来灵活的控制我们的Api。namespace version.Controllers.v1 {[ApiVersion(3.0)][ApiVersion(1.0,Deprecated true)][ApiController][Route(api/v{version:ApiVersion}/[controller])]public class ValuesController : Controller{[HttpGet(version), MapToApiVersion(1.0)]public string Version() (HttpContext.GetRequestedApiVersion().ToString());[HttpGet(version3), MapToApiVersion(3.0)]public string Version3() (HttpContext.GetRequestedApiVersion().ToString());} } 通过postman测试一下。总结可以看到Microsoft.AspNetCore.Mvc.Versioning功能还能强大的基本满足了大部分的需求还有一些功能可能没有在本文中涉及到可以去这里.翻阅。
http://www.pierceye.com/news/603214/

相关文章:

  • 公司网站代码模板下载山东城建设计院网站
  • 茂港网站建设公司妇科医院网站建设怎么做
  • 怎么自己改自己做的网站的图片策划案网站
  • 养殖p2p网站建设网址大全浏览器下载
  • 建立网站的过程沈阳做网站直播的公司
  • 沈阳市网站设计公司大全电商毕业设计作品
  • 做网站怎么赚钱滑县电桂林两江四湖景区导游词
  • 加快门户网站建设文网站建设费用计入什么科目
  • 网站建设合同英文模板下载湖州做网站的公司
  • 网站内容页设计济南网站优化
  • 简洁中文网站模板下载军事新闻头条最新消息
  • 湘潭网站建设 诚信磐石网络开发app软件的步骤
  • 阿里云网站备案网站建设方案书私有云可以建设网站
  • 网站建设如何增加流量做杂志的网站有哪些
  • 可信网站认证有用建设网站什么语言
  • 福州网站建设 大公司wordpress顺序
  • 为什么网站开发要用架构个人主页网站制作教程
  • 东莞教育网站建设做网站工资还没有文员高
  • 郑州网站制作工作室国内网站开发
  • 现在什么网站做外贸的最好wordpress window系统
  • 柬埔寨网赌网站开发新网络营销
  • html5毕业设计作品苏州关键词优化排名推广
  • 网站建设包括的内容相册在线设计平台
  • 花生壳可做网站吗微商城开发用华网天下首选
  • 口岸地区网站建设内容塔里木油田公司档案馆网站建设研究
  • 网站备案属于公司哪一块石家庄最新状况
  • 秦州建设网站免费代刷网站推广
  • 怎么查看一个网站是用什么程序做的我的家乡湛江网站设计
  • 沈阳网页模板建站开发手机app多少钱
  • 全国建设注册中心网站网页设计师培训价格