日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.Net Core中的Api版本控制

發布時間:2023/12/4 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net Core中的Api版本控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:API Versioning in .Net Core
作者:Neel Bhatt

簡介

Api的版本控制是Api開發中經常遇到的問題, 在大部分中大型項目都需要使用到Api的版本控制

在本篇博客中,我們將說明一下如何在.Net Core Api項目中使用Api版本控制。

本篇博客中測試項目的開發環境:

  • Visual Studio 2017

  • .Net Core 2.1 SDK

.Net Core Api中使用Api版本控制

創建一個Api項目

首先我們創建一個.NET Core Api項目

使用Nuget安裝Api版本控制庫

.NET Core Mvc中,微軟官方提供了一個可用的Api版本控制庫Microsoft.AspNetCore.Mvc.Versioning。 這里我們可以使用Nuget安裝這個包。

PM> Install-Package Microsoft.AspNetCore.Mvc.Versioning

修改Startup類

Microsoft.AspNetCore.Mvc.Versioning庫安裝完成之后,下一步我們來添加Api版本控制服務。

這里我們需要在Startup類的ConfigureService方法中添加以下代碼。

代碼解釋

ReportApiVersion屬性是一個布爾類型,如果設置為true, 在Api請求的響應頭部,會追加當前Api支持的版本, 例

AssumeDefaultVersionWhenUnspecified屬性是為了標記當客戶端沒有指定版本號的時候,是否使用默認版本號
DefaultApiVersion屬性即默認版本號

創建多版本Api

這里為了測試.Net Core Mvc的Api版本控制庫,我們創建如下2個Controller。

代碼解釋

  • Value1Controller和Value2Controller使用了一樣的路由"/api/values"

  • Value1Controller類頭部使用ApiVersion特性標記了當前Controller的Api版本號是1.0

  • Value2Controller類頭部使用ApiVersion特性標記了當前Controller的Api版本號是2.0
    -Value1Controller和Value2Controller都持有相同方法簽名的Get方法, 只是2個Get中返回了不同的字符串

現在我們啟動項目,得到的結果如下,說明當沒有指定Api版本號時,項目自動使用1.0版本的Api, 即ValuesV1Controller中的Get方法。

如何在查詢字符串(Query String)中使用版本控制

Microsoft.AspNetCore.Mvc.Versioning支持以QueryString的形式指定請求Api的版本號。開發人員可以在Url中指定api-version參數來選擇調用的Api版本號。

以當前項目為例
當請求https://localhost:44319/api/values?api-version=2.0時, 返回結果

["value1 from Version 2","value2 from Version 2"]

當請求https://localhost:44319/api/values?api-version=1.0時, 返回結果

["Value1 from Version 1","value2 from Version 1"]

如何使用路由約束中指定請求Api的版本

Microsoft.AspNetCore.Mvc.Versioning還支持使用路由約束指定請求Api的版本號。

例: [Route(“api/{v:apiVersion}/Values”)]

我們對之前2個Controller的代碼作如下修改。

現在我們通過以下2個Url請求Api, 返回的結果如下 :
/api/2.0/values

["value1 from Version 2","value2 from Version 2"]

/api/1.0/values

["Value1 from Version 1","value2 from Version 1"]

如何在請求頭(HTTP Header)中使用版本控制

以上的2種方式需要修改請求的Url, 如果你不喜歡這2種方式,Microsoft.AspNetCore.Mvc.Versioning還提供了第三種指定Api版本號的方式,即在HTTP請求頭中添加版本號參數。

為了啟用這種方式,我們首先需要在Startup.cs中修改Microsoft.AspNetCore.Mvc.Versioning的配置, 代碼如下:

這里通過ApiVersionReader屬性指定了Api版本號是從請求頭部的x-api-version屬性來的。

Tips: 一旦你使用o.ApiVersionReader = new HeaderApiVersionReader("x-api-version");, 在查詢字符串中指定版本號的方式將不再可用,如果你希望同時支持2種方式,請改用o.ApiVersionReader = new QueryStringOrHeaderApiVersionReader("x-api-version");

下面我們通過Postman來請求2.0的Api, 結果正確返回了。

其他特性

棄用Api(Deprecated)特性

有些時候,我們需要標記一些過時的Api為棄用狀態,但是我們又不希望完全移除這個版本的Api, 我們可以使用Deprecated特性。

例:我們當前希望棄用ValuesV1Controller, 我們可以指定Deprecated特性的值為true

當我們請求在此請求這個api的時候, 在響應頭中會出現api-deprecated-versionsapi-supported-versions2個屬性。

這段響應的意思就是1.0版本的Api已經過期了,2.0版本中有相同的Api, 可以換用2.0版本的Api。

使用ApiVersionNeutral指定不需要版本控制的Api

在編寫Api的時候,對于一些非常簡單的Api, 我們可能不需要指定Api版本號, 例如健康檢查Api。我們可以使用ApiVersionNeutral特性,將它從Api版本控制中排除掉。

例:

原文地址:?https://www.cnblogs.com/lwqlun/p/9747180.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的.Net Core中的Api版本控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。