国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - .NET Core利用swagger進(jìn)行API接口文檔管理的方法詳解

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

2020-05-24 14:50OMango ASP.NET教程

這篇文章主要給大家介紹了關(guān)于.NET Core利用swagger進(jìn)行API接口文檔管理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

一、問題背景

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

二、什么是Swagger

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

三、.NET Core中使用

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

?
      <pre id="myuqy"></pre>
    • <tfoot id="myuqy"><tr id="myuqy"></tr></tfoot><button id="myuqy"><code id="myuqy"></code></button><dl id="myuqy"><tr id="myuqy"></tr></dl>
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      // 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 { csharp" id="highlighter_699906">
      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      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>
        /// 根據(jù)ID獲取信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        // GET api/values/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
         return "value";
        }
        /// <summary>
        /// POST了一個(gè)數(shù)據(jù)信息
        /// </summary>
        /// <param name="value"></param>
        // POST api/values
        [HttpPost]
        public void Post([FromBody]string value)
        {
        }
        /// <summary>
        /// 根據(jù)ID put 數(shù)據(jù)
        /// </summary>
        /// <param name="id"></param>
        /// <param name="value"></param>
        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody]string value)
        {
        }
        /// <summary>
        /// 根據(jù)ID刪除數(shù)據(jù)
        /// </summary>
        /// <param name="id"></param>
        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
        /// <summary>
        /// 復(fù)雜數(shù)據(jù)操作
        /// </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生成文檔,如圖所示

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

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

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

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

      ?
      <noframes id="myuqy"><tfoot id="myuqy"></tfoot></noframes>
    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      // 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 { csharp" id="highlighter_96448">
      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      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認(rèn)證信息",
         Required = true
        });
       }
      }

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

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

       四、與其他API管理工具結(jié)合

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

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

      源碼下載:demo地址

      五、總結(jié)

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

      以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。

      原文鏈接:http://www.cnblogs.com/OMango/p/8460092.html

      延伸 · 閱讀

      精彩推薦
      主站蜘蛛池模板: 午夜在线观看视频 | 黄视频网页| 亚洲在线电影 | 国产一区二区视频精品 | 欧美日韩视频 | 日韩精品在线观看免费 | 成人福利| 久久中文字幕一区二区三区 | 天天澡天天狠天天天做 | 精品国产乱码久久久久久图片 | 在线观看中文字幕亚洲 | 午夜精| 成人免费xxx在线观看 | 在线欧美一区 | 很黄很色很爽的视频 | 成人影院www在线观看 | 一区二区三区在线播放 | 午夜色电影 | 成人免费在线观看视频 | 精品久久久久久国产 | 欧美日韩精品一区 | 日韩精品视频一区二区三区 | 久久综合另类激情人妖 | 中文精品一区二区 | 日本一区二区视频免费观看 | 国内精品久久久久 | 亚洲精品www久久久久久广东 | www.久草.com| 欧美a网 | av久久| 日韩精品一区二区三区视频播放 | 日韩国产欧美一区 | 欧美大片高清在线观看平台 | 亚洲成av人片在线观看香蕉 | 久久久久久综合 | 亚洲国产视频一区二区 | 免费裸体视频网站 | 亚洲激情中文字幕 | 午夜精品影院 | 国产免费av网站 | 一本亚洲 |
      <abbr id="myuqy"></abbr>
    • <tfoot id="myuqy"></tfoot>
      <pre id="myuqy"><fieldset id="myuqy"></fieldset></pre>
            • <noframes id="myuqy"></noframes>