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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

[翻译]创建ASP.NET WebApi RESTful 服务(9)

發布時間:2025/3/15 asp.net 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [翻译]创建ASP.NET WebApi RESTful 服务(9) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一旦成功的發布API后,使用者將依賴于你所提供的服務。但是變更總是無法避免的,因此謹慎的制定ASP.NET Web API的版本策略就變得非常重要。一般來說,新的功能需要無縫的接入,有時新老版本需要并行,以便給使用者足夠的時間來進行遷移和配套的變更。設置,老的版本會一直持續被使用。

簡單版本管理

假設我們現在對StudentsController進行修改,將GET方法中返回“FirstName” 和 “LastName”修改為返回“FullName”和 “CoursesDuration”。

最簡單的方法就是新建一個類似于StudentsV2Controller的新服務。請留意V2,接下來將依賴這個引入管理策略。這種方法來自于Shawn Wildermuth的plural sight course文章。舊版本的服務返回的json應該是這樣的:

1: [{ 2: "id": 2, 3: "url": "http://localhost:8323/api/students/HasanAhmad", 4: "firstName": "Hasan", 5: "lastName": "Ahmad", 6: "gender": 0, 7: "enrollmentsCount": 4 8: }, 9: { 10: "id": 3, 11: "url": "http://localhost:8323/api/students/MoatasemAhmad", 12: "firstName": "Moatasem", 13: "lastName": "Ahmad", 14: "gender": 0, 15: "enrollmentsCount": 4 16: }]

而新版本的返回如下:

1: [{ 2: "id": 2, 3: "url": "http://localhost:8323/api/students/HasanAhmad", 4: "fullName": "Hasan Ahmad", 5: "gender": 0, 6: "enrollmentsCount": 4, 7: "coursesDuration": 13 8: }, 9: { 10: "id": 3, 11: "url": "http://localhost:8323/api/students/MoatasemAhmad", 12: "fullName": "Moatasem Ahmad", 13: "gender": 0, 14: "enrollmentsCount": 4, 15: "coursesDuration": 16 16: }]

新版本的GET函數的實現為:

1: public IEnumerable<StudentV2BaseModel> Get(int page = 0, int pageSize = 10) 2: { 3: IQueryable<Student> query; 4: ? 5: query = TheRepository.GetAllStudentsWithEnrollments().OrderBy(c => c.LastName); 6: ? 7: var totalCount = query.Count(); 8: var totalPages = Math.Ceiling((double)totalCount / pageSize); 9: ? 10: var urlHelper = new UrlHelper(Request); 11: var prevLink = page > 0 ? urlHelper.Link("Students", new { page = page - 1, pageSize = pageSize }) : ""; 12: var nextLink = page < totalPages - 1 ? urlHelper.Link("Students", new { page = page + 1, pageSize = pageSize }) : ""; 13: ? 14: var paginationHeader = new 15: { 16: TotalCount = totalCount, 17: TotalPages = totalPages, 18: PrevPageLink = prevLink, 19: NextPageLink = nextLink 20: }; 21: ? 22: System.Web.HttpContext.Current.Response.Headers.Add("X-Pagination", 23: Newtonsoft.Json.JsonConvert.SerializeObject(paginationHeader)); 24: ? 25: var results = query 26: .Skip(pageSize * page) 27: .Take(pageSize) 28: .ToList() 29: .Select(s => TheModelFactory.CreateV2Summary(s)); 30: ? 31: return results; 32: }

StudentV2BaseModel和CreateV2Summary只是為了舉例方便,實際可以根據需要是否要進行這樣的修改或者無須修改。

具體的代碼如下:

1: public class StudentV2BaseModel 2: { 3: public int Id { get; set; } 4: public string Url { get; set; } 5: public string FullName { get; set; } 6: public Data.Enums.Gender Gender { get; set; } 7: public int EnrollmentsCount { get; set; } 8: public double CoursesDuration { get; set; } 9: } 10: ? 11: public class ModelFactory 12: { 13: public StudentV2BaseModel CreateV2Summary(Student student) 14: { 15: return new StudentV2BaseModel() 16: { 17: Url = _UrlHelper.Link("Students", new { userName = student.UserName }), 18: Id = student.Id, 19: FullName = string.Format("{0} {1}", student.FirstName, student.LastName), 20: Gender = student.Gender, 21: EnrollmentsCount = student.Enrollments.Count(), 22: CoursesDuration = Math.Round(student.Enrollments.Sum(c => c.Course.Duration)) 23: }; 24: } 25: }

來源:http://bitoftech.net/2013/12/16/asp-net-web-api-versioning-strategy/

轉載于:https://www.cnblogs.com/tukzer/p/3664153.html

總結

以上是生活随笔為你收集整理的[翻译]创建ASP.NET WebApi RESTful 服务(9)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91精品综合久久 | 在线播放网址 | 亚洲视频网站在线 | av电影在线不卡 | 亚洲美女视频网 | 国产欧美日本在线 | 欧美日韩综合网 | 玖玖在线播放 | 久久爱影视 | 午夜一区二区三区四区 | 精品人妻一区二区免费视频 | 老妇free性videosxx| 国产视频精品一区二区三区 | 香蕉视频影院 | 人人干人人艹 | 色婷婷综合久久久久中文字幕 | 欧美888| 体内精69xxxxxx| 91在线观看成人 | 日韩脚交footjobhd | 三级黄网 | 97人妻人人澡人人爽人人精品 | 久久精品欧美一区二区 | 另类视频在线观看+1080p | 免费在线成人网 | 黑人乱码一区二区三区av | 日韩综合网站 | 三级视频国产 | 色狠狠干 | 欧美一区二区三 | 免费三级黄 | 国产福利在线看 | 国产精品久久午夜夜伦鲁鲁 | 国产好片无限资源 | 石原莉奈在线播放 | 欧美xx孕妇 | 91欧美亚洲 | 欧美三级小视频 | 国产精品久久婷婷六月丁香 | 谁有免费的黄色网址 | av中字| 亚洲天天视频 | 国产欧美一区二区三区国产幕精品 | 免费国产在线观看 | 日韩一级免费片 | 日韩一区二区三区在线观看视频 | 欧美变态口味重另类 | 性高跟丝袜xxxxhd | 欧美性猛交乱大交3 | 成人性生交大片免费看vrv66 | 久久久久久av无码免费网站 | 成人网站免费观看入口 | 亚洲熟女综合色一区二区三区 | 久久精品视频国产 | 黄色一级带 | 国产15页| 日韩欧美在线观看视频 | 欧美高清一区二区三区四区 | 日韩视频成人 | 深夜福利网址 | 欧美视频一二三区 | 伊人网伊人影院 | 久久久久久久久福利 | 国产伦精品一区二区三区四区视频 | 国内偷拍精品视频 | 国产精成人| 好吊视频一区二区三区四区 | 国产做爰视频免费播放 | 91看片淫黄大片91桃色 | 69视频免费| 日韩性xx | 成人精品一区二区三区 | 欧美精品一区二区在线观看 | 亚洲午夜久久久久久久久久久 | 国产一区二区小说 | 永久免费国产 | 中文字幕在线三区 | 欧美大尺度做爰啪啪床戏明星 | 直接看的毛片 | 黑人与日本少妇高潮 | 一本大道久久久久精品嫩草 | 婷婷综合一区 | 美女的奶胸大爽爽大片 | 高跟鞋丝袜猛烈xxxx | 天堂网av中文字幕 | 99久久99久久 | 香蕉婷婷 | 激情九月天 | 色狠狠一区二区三区香蕉 | 精品无码av一区二区三区不卡 | 国产精品久久久久久久久久久久久久久久久久 | 亚洲美女性生活视频 | 国产裸体视频 | 黄色一级视频免费看 | caoporn免费在线 | 色哟哟日韩精品 | 无码国产69精品久久久久同性 | 亚洲精品女人 | 日韩av资源网 |