亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

.NET Core利用swagger進行API接口文檔管理的方法詳解

2024-07-10 13:33:00
字體:
來源:轉載
供稿:網友

一、問題背景

隨著技術的發展,現在的開發模式已經更多的轉向了前后端分離的模式,在前后端開發的過程中,聯系的方式也變成了API接口,但是目前項目中對于API的管理很多時候還是通過手工編寫文檔,每次的需求變更只要涉及到接口的變更,文檔都需要進行額外的維護,如果有哪個小伙伴忘記維護,很多時候就會造成一連續的問題,那如何可以更方便的解決API的溝通問題?Swagger給我們提供了一個方式,由于目前主要我是投入在.NET Core項目的開發中,所以以.NET Core作為示例

二、什么是Swagger

Swagger可以從不同的代碼中,根據注釋生成API信息,swagger擁有強大的社區,并且對于各種語言都支持良好,有很多的工具可以通過swagger生成的文件生成API文檔

三、.NET Core中使用

.NET Core中使用首先要用nuget引用Swashbuckle.AspNetCore,在startup.cs中加入如下代碼

  // This method gets called by the runtime. Use this method to add services to the container.  public void ConfigureServices(IServiceCollection services)  {   services.AddMvc();   services.AddSwaggerGen(c =>   {    c.SwaggerDoc("v1", new Info {    var basePath = PlatformServices.Default.Application.ApplicationBasePath;    var xmlPath = Path.Combine(basePath, "WebApplication2.xml");    c.IncludeXmlComments(xmlPath);   });   services.AddMvcCore().AddApiExplorer();  }  // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.  public void Configure(IApplicationBuilder app, IHostingEnvironment env)  {   if (env.IsDevelopment())   {    app.UseDeveloperExceptionPage();   }   app.UseMvcWithDefaultRoute();   app.UseSwagger(c =>   {   });   app.UseSwaggerUI(c =>   {    c.ShowExtensions();    c.ValidatorUrl(null);    c.SwaggerEndpoint("/swagger/v1/swagger.json", "test V1");   });  }

以上部分為加載swagger的代碼,位于startup.cs中,下面是controller代碼:

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;namespace WebApplication2.Controllers{ /// <summary> /// 測試信息 /// </summary> [Route("api/[controller]/[action]")] public class ValuesController : Controller {  /// <summary>  /// 獲取所有信息  /// </summary>  /// <returns></returns>  [HttpGet]  public IEnumerable<string> Get()  {   return new string[] { "value1", "value2" };  }  /// <summary>  /// 根據ID獲取信息  /// </summary>  /// <param name="id"></param>  /// <returns></returns>  // GET api/values/5  [HttpGet("{id}")]  public string Get(int id)  {   return "value";  }  /// <summary>  /// POST了一個數據信息  /// </summary>  /// <param name="value"></param>  // POST api/values  [HttpPost]  public void Post([FromBody]string value)  {  }  /// <summary>  /// 根據ID put 數據  /// </summary>  /// <param name="id"></param>  /// <param name="value"></param>  // PUT api/values/5  [HttpPut("{id}")]  public void Put(int id, [FromBody]string value)  {  }  /// <summary>  /// 根據ID刪除數據  /// </summary>  /// <param name="id"></param>  // DELETE api/values/5  [HttpDelete("{id}")]  public void Delete(int id)  {  }  /// <summary>  /// 復雜數據操作  /// </summary>  /// <param name="id"></param>  // DELETE api/values/5  [HttpPost]  public namevalue test(namevalue _info)  {   return _info;  } } public class namevalue {  /// <summary>  /// name的信息  /// </summary>  public String name { get; set; }  /// <summary>  /// value的信息  /// </summary>  public String value { get; set; } }}

接下來我們還需要在生成中勾上XML生成文檔,如圖所示

swagger,api接口,.net,core,asp.net

接下去我們可以運行起來了,調試,瀏覽器中輸入http://localhost:50510/swagger/,這里端口啥的根據實際情況來,運行效果如下圖所示:

swagger,api接口,.net,core,asp.net

可以看到swagger將方法上的注釋以及實體的注釋都抓出來了,并且顯示在swaggerui,整體一目了然,并且可以通過try it按鈕進行簡單的調試,但是在具體項目中,可能存在需要將某些客戶端信息通過header帶到服務中,例如token信息,用戶信息等(我們項目中就需要header中帶上token傳遞到后端),那針對于這種情況要如何實現呢?可以看下面的做法

// This method gets called by the runtime. Use this method to add services to the container.  public void ConfigureServices(IServiceCollection services)  {   services.AddMvc();   services.AddSwaggerGen(c =>   {    c.SwaggerDoc("v1", new Info {    var basePath = PlatformServices.Default.Application.ApplicationBasePath;    var xmlPath = Path.Combine(basePath, "WebApplication2.xml");    c.IncludeXmlComments(xmlPath);    c.OperationFilter<AddAuthTokenHeaderParameter>();   });   services.AddMvcCore().AddApiExplorer();  }
 public class AddAuthTokenHeaderParameter : IOperationFilter {  public void Apply(Operation operation, OperationFilterContext context)  {   if (operation.Parameters == null)   {    operation.Parameters = new List<IParameter>();   }   operation.Parameters.Add(new NonBodyParameter()   {    Name = "token",    In = "header",    Type = "string",    Description = "token認證信息",    Required = true   });  } }

我們在ConfigureServices添加了OperationFilter<AddAuthTokenHeaderParameter>() ,通過這種方式我們可以在swagger中顯示token的header,并且進行調試(如圖所示),AddAuthTokenHeaderParameter 的apply的屬性context中帶了controller以及action的各種信息,可以配合實際情況使用

swagger,api接口,.net,core,asp.net

 四、與其他API管理工具結合

swagger強大的功能以及社區的力量,目前很多的API管理工具都支持YApi,目前我們使用的是由去哪兒開源的YApi,從圖中可以看到YApi支持導入swagger生成的JSON文件,除該工具 之外DOClever(開源)也是一個不錯的API管理工具,也支持Swagger文件導入(具體工具用法,大家可以去看他們的官網)

swagger,api接口,.net,core,asp.net

源碼下載:demo地址

五、總結

Swagger是一個很好的工具,并且在前后端分離開發越來越流行的情況下,在后續的開發過程中,我覺得會扮演著越來越重要的作用,目前我們公司小的項目已經準備開始使用swagger+yapi進行API的管理方式,而這篇文章也是這段時間抽空整理API管理的結果,希望可以幫助到大家,這里可能有很多不足的地方,歡迎大家拍磚,也希望可以跟大家一起進步

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产va另类| 亚洲精品美女免费| 日韩风俗一区 二区| 久久久久久久亚洲精品| 日韩av在线导航| 欧洲成人性视频| 久久久999精品免费| 九九热r在线视频精品| 91爱视频在线| 亚洲视频在线播放| 精品视频中文字幕| 亚洲欧洲一区二区三区在线观看| 亚洲欧美日韩中文在线制服| 亚洲性夜色噜噜噜7777| 欧美日韩精品在线视频| 日本亚洲欧洲色α| 成年无码av片在线| 中文字幕亚洲一区在线观看| 国产精品视频一区国模私拍| 亚洲男人天堂2023| 国产午夜精品久久久| 国内精品久久久久久久久| 久久久国产一区二区| 国产成人一区二区三区电影| 国产精品高潮呻吟久久av野狼| 国产做受69高潮| 亚洲精品视频在线播放| 欧美性理论片在线观看片免费| 91天堂在线观看| 午夜精品免费视频| 日韩最新免费不卡| 亚洲人成77777在线观看网| 国产香蕉97碰碰久久人人| 国产精品极品尤物在线观看| 日韩av在线免费| 国产精品av电影| 国产精品免费看久久久香蕉| 国产在线精品播放| 久久精品99久久久香蕉| 亚洲欧洲一区二区三区久久| 91色视频在线导航| 国产一区二区色| 精品久久久视频| 人体精品一二三区| 欧美另类老女人| 国产一区二区三区中文| 亚洲午夜小视频| 色综合色综合久久综合频道88| 欧美日韩成人在线播放| 成人免费自拍视频| 亚洲风情亚aⅴ在线发布| 久久精品99久久久久久久久| 最近中文字幕2019免费| 亚洲黄色成人网| 欧美巨猛xxxx猛交黑人97人| 亚洲综合中文字幕68页| 国产成人亚洲综合青青| 日韩在线观看免费全集电视剧网站| 亚洲男女自偷自拍图片另类| 欧美高清自拍一区| 国内成人精品视频| 国产精品网站视频| 亚洲精品丝袜日韩| 91亚洲人电影| 国产精品久久久久国产a级| 久久久国产视频91| 日韩精品中文字幕在线观看| 久久精品精品电影网| 久久乐国产精品| 亚洲欧美另类自拍| 国产精品免费观看在线| 成人亚洲综合色就1024| 欧美国产日韩精品| 日本午夜在线亚洲.国产| 久久男人av资源网站| 国产丝袜一区视频在线观看| 欧美日韩国产成人| 成人免费网站在线| 热门国产精品亚洲第一区在线| 亚洲专区国产精品| 国产欧美日韩精品在线观看| 国产日韩在线亚洲字幕中文| 亚洲欧美国产日韩中文字幕| 亚洲福利视频二区| 2019中文字幕在线| 亚洲性生活视频在线观看| 亚洲成人xxx| 亚洲欧美精品中文字幕在线| 欧美最顶级的aⅴ艳星| 亚洲色图日韩av| 欧美日韩国产精品一区二区三区四区| 4438全国亚洲精品在线观看视频| 亚洲性猛交xxxxwww| 成人黄色激情网| 欧美性猛交xxxx乱大交蜜桃| 亚洲最大福利网站| 91精品中文在线| 国外成人在线播放| 国产精品久久久久久久午夜| 久久综合国产精品台湾中文娱乐网| 91av免费观看91av精品在线| 国产ts一区二区| 欧洲成人午夜免费大片| 91精品国产综合久久香蕉最新版| 国产精品女视频| 亚洲激情视频在线播放| 91久久久精品| 在线观看日韩专区| 麻豆国产精品va在线观看不卡| 亚洲无线码在线一区观看| 麻豆成人在线看| 粉嫩av一区二区三区免费野| 久久综合久久美利坚合众国| 亚洲性猛交xxxxwww| 欧美激情2020午夜免费观看| 中文字幕av一区| 欧美在线激情视频| 国产999精品久久久| 免费91麻豆精品国产自产在线观看| 日韩av电影在线免费播放| 97香蕉久久夜色精品国产| 国产亚洲精品美女| 久久6精品影院| 亚洲第一区中文99精品| 亚洲第一男人天堂| 亚洲在线www| 欧美性猛交xxxx免费看漫画| 日韩精品免费综合视频在线播放| 国产91对白在线播放| 亚洲欧美日韩中文视频| 国产玖玖精品视频| 欧美成人激情视频免费观看| 国产视频久久久| 亚洲在线视频福利| 成人免费自拍视频| 欧美性色xo影院| 亚洲黄色av网站| 国产女人18毛片水18精品| 中文字幕一区电影| 韩国国内大量揄拍精品视频| 国产一区红桃视频| 欧美午夜精品久久久久久久| 亚洲国产成人精品久久久国产成人一区| 久久久国产一区二区| 91极品女神在线| 久久久久久久久久久久久久久久久久av| 亚洲综合中文字幕68页| 国产精品久久一区| 91精品啪aⅴ在线观看国产| 欧美午夜片在线免费观看| 日韩中文字幕精品视频| 97在线视频一区| 国产极品jizzhd欧美| 欧美性受xxxx黑人猛交| 不用播放器成人网| 久久精品国产清自在天天线| 亚洲天堂免费观看| 久久久久在线观看| 亚洲欧洲一区二区三区久久| 91人成网站www| 免费91在线视频| 欧美国产日韩视频| 久久久久亚洲精品| 成人性生交大片免费看视频直播|