.net core WebApi 使用Swagger生成API文檔

關于 Swagger

Swagger能成為最受歡迎的REST APIs文檔生成工具之一,有以下幾個原因:

  • Swagger 可以生成一個具有互動性的API控制臺,開發者可以用來快速學習和嘗試API。
  • Swagger 可以生成客戶端SDK代碼用于各種不同的平臺上的實現。
  • Swagger 文件可以在許多不同的平臺上從代碼注釋中自動生成。
  • Swagger 有一個強大的社區,里面有許多強悍的貢獻者。

Swagger 文檔提供了一個方法,使我們可以用指定的 JSON摘要來描述你的 API,包括了比如 names、order 等 API 信息。

1、安裝Swashbuckle.AspNetCore

using Swashbuckle.AspNetCore.Swagger;

   public void ConfigureServices(IServiceCollection services){//注冊Swagger生成器,定義一個和多個Swagger 文檔services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });//設置版本號,標題var xmlPath = Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location), "SwaggerApi.xml");//為Swagger設置xml文檔注釋路徑c.IncludeXmlComments(xmlPath);//只有設置了xmlm文檔的路徑生成的文檔才會有注釋c.OperationFilter<HttpHeaderOperation>(); // 添加httpHeader參數
            });services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);}

2、啟用中間件服務

 public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseHsts();}//啟用中間件服務生成Swagger作為JSON終結點
            app.UseSwagger();//啟用中間件服務對swagger-ui,指定Swagger JSON終結點app.UseSwaggerUI(c =>{c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");c.RoutePrefix = string.Empty;});app.UseHttpsRedirection();app.UseMvc();}

?

  3、新建HttpHeaderOperation

 public void Apply(Operation operation, OperationFilterContext context){if (operation.Parameters == null){operation.Parameters = new List<IParameter>();}var actionAttrs = context.ApiDescription.ActionAttributes();var isAuthorized = actionAttrs.Any(a => a.GetType() == typeof(AuthorizeAttribute));if (isAuthorized == false) //提供action都沒有權限特性標記,檢查控制器有沒有
            {var controllerAttrs = context.ApiDescription.ControllerAttributes();isAuthorized = controllerAttrs.Any(a => a.GetType() == typeof(AuthorizeAttribute));}var isAllowAnonymous = actionAttrs.Any(a => a.GetType() == typeof(AllowAnonymousAttribute));if (isAuthorized && isAllowAnonymous == false){operation.Parameters.Add(new NonBodyParameter(){Name = "Authorization",  //添加Authorization頭部參數In = "header",Type = "string",Required = false,Description = "access token"});}}public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context){throw new NotImplementedException();}

4、配置XML文檔路徑

?5、地址欄輸入http://localhost:{port}/swagger/index.html

?

轉載于:https://www.cnblogs.com/qzxj/p/10783600.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248041.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248041.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248041.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git — 初體驗

準備工作 版本管理軟件 作用 記錄代碼的版本實現多人協作 分類 集中式&#xff0c;典型代表 SVN分布式&#xff0c;典型代表 Git 注冊遠程倉庫賬號 遠程倉庫相當于中央服務器我們需要在github上或碼云上注冊一個賬號&#xff0c;用于創建遠程倉庫使用注冊的時候&#xff0…

iOS CoreTelephony框架介紹與使用案列

昨晚看一篇文章時看到了私有API這個詞&#xff0c;貌似開發者對私有API的使用很反感于是果斷百度谷歌&#xff0c;以下是Stackoverflow中關于Private Frameworks的一個解釋&#xff1a; Private frameworks are frameworks which you are not allowed to use. They are not exp…

JS數組的迭代器方法

迭代器forEachevery一、迭代器方法 迭代器方法&#xff0c; 這些方法對數組中的每一個元素應用一個函數&#xff0c;可以返回一個值&#xff0c;一組值或一個新數組。 不生成新數組的迭代器方法 1.forEach() forEach()輸出 forEach輸出結果2.every() 該方法按接受一個返回值為布…

Git 筆記

三個區域 下面三個區域&#xff0c;是Git虛擬的區域&#xff0c;看不到&#xff0c;摸不著。 工作區 工作區&#xff0c;指的是使用Git管理后的文件&#xff0c;這些文件顯示在磁盤上&#xff0c;供我們使用或修改的區域。所以&#xff0c;粗略的說&#xff0c;項目文件夾就是…

C# webapi 上傳下載圖片

客戶端上傳文件 string url url "webUploadFile";Uri server new Uri(url);HttpClient httpClient new HttpClient();MultipartFormDataContent multipartFormDataContent new MultipartFormDataContent();StreamContent streamConent new StreamContent(new F…

OC-@dynamic 關鍵字

dynamic這個關鍵詞&#xff0c;通常是用不到的。 它與synthesize的區別在于&#xff1a; 使用synthesize編譯器會確實的產生getter和setter方法&#xff0c;而dynamic僅僅是告訴編譯器這兩個方法在運行期會有的&#xff0c;無需產生警告。 假設有這么個場景&#xff0c;B類&…

git -- 練習的筆記

gitgitee.com:my_exercises/my_exercises.githttps://gitee.com/my_exercises/my_exercises/invite_link?invite3ab56c724a0aed34ae2bd193ce87e741e67fe05ee029cc01b7993663152babc57d76203fdafbbb42e766b0d826817bc91.在任意位置右鍵打開 2.初始化設置 3.添加遠程倉庫地址 4.…

Swift傻傻分不清楚系列(十二) 屬性

本頁包含內容&#xff1a; 存儲屬性&#xff08;Stored Properties&#xff09;計算屬性&#xff08;Computed Properties&#xff09;屬性觀察器&#xff08;Property Observers&#xff09;全局變量和局部變量&#xff08;Global and Local Variables&#xff09;類型屬性&a…

GIT — 使用回顧

回顧Git的使用 記錄每次的變更 工作區 --> 暫存區 git add . / git add 文件 文件夾 .... 工作區 --> 暫存區/本地倉庫 前提條件&#xff1a;文件曾經被添加到暫存區或提交到倉庫git commit -a -m 提交說明 暫存區 --> 本地倉庫 git commit -m 提交說明 / git commi…

獲取兩個數百分比的值

1 /**2 * 獲取兩個數百分比的值3 * 4 * param num1 5 * param num26 * param retain 保留小數位數7 * return8 */9 public static String numberFormat(int num1, int num2, int retain) { 10 NumberFormat numberFormat …

iOS AVAudioPlayer和AVAudioPlayerDelegate-音頻播放處理中斷

學習總是在進行。 一、AVAudioPlayer如何處理中斷 AVAudioPlayer類提供了代理方法&#xff0c;用來處理當播放音頻文件時&#xff0c;發生來電、鬧鐘等事件。設置代理并遵守AVAudioPlayerDelegate協議,<span style"font-family: Arial, Helvetica, sans-serif;"&g…

Ajax — 大事件項目(第一天)

應用的前端技術 Ajax (重要) — jQuery方式接口請求Layui 框架使用HTML CSS JS 項目說明和演示 線上 DEMO 項目地址&#xff1a;http://www.liulongbin.top:8086/項目的 API 接口地址&#xff1a; https://www.showdoc.cc/escook?page_id3707158761215217 項目請求根路徑…

JS,JQ 格式化小數位數

在<script>中&#xff1a; $(function(){   var num$(".price").length;/*獲取應用了class"price"的標簽數量*/   for(var i0;i<num;i){     if($(".price")[i].innerText!"")       $(".price")[i]…

iOS開發實用技巧—Objective-C中的各種遍歷(迭代)方式

說明&#xff1a; 1&#xff09;該文簡短介紹在iOS開發中遍歷字典、數組和集合的幾種常見方式。 2&#xff09;該文對應的代碼可以在下面的地址獲得&#xff1a;https://github.com/HanGangAndHanMeimei/Code 一、使用for循環 要遍歷字典、數組或者是集合&#xff0c;for循環是…

windows系統作為客戶端時,linux中本地yum源掛載時,如何同時掛載DVD1和DVD2?

這里以CentOS6.5為例.他的鏡像有兩個DVD1和DVD2.DVD1中是系統和主要的安裝包,DVD2中是剩下的安裝包 當掛載時如果要同時掛載DVD1和DVD2.需要這樣做: 1)在虛擬機的設置中選擇連接 2)分別在mnt下創建cdrom和cdrom1文件夾 3)到dev下查看有軟連接 cdrom->sr0 cdrom1->sr1 這里…

Ajax — 大事件項目(第二天)

大事件-02 fix一個bug 原因&#xff1a; 開始做注冊的時候&#xff0c;頁面中只有一個 namepassword的input&#xff0c;所以 $(‘input[name“password”]’) 可以準確的找到元素后來做登錄的時候&#xff0c;頁面中多了一個namepassword的input&#xff0c;所以$(‘input[…

OpenCV自帶dnn的Example研究(3)— object_detection

這個博客系列&#xff0c;簡單來說&#xff0c;今天我們就是要研究https://docs.opencv.org/master/examples.html下的6個文件&#xff0c;看看在最新的OpenCV中&#xff0c;它們是如何發揮作用的。在配置使用的過程中&#xff0c;需要注意使用較高版本的VS避免編譯器兼容問題&…

Ajax — 大事件項目(第三天)

大事件-03 用戶信息 表單驗證 html中&#xff0c;直接使用layui提供的內置驗證規則 email <input type"text" name"email" required lay-verify"required|email" placeholder"請輸入郵箱" autocomplete"off" class&q…

iOS中監測來電方案

問題 最近在做一個有錄音功能的App&#xff0c;要求當用戶接到來電時&#xff0c;要停止錄音。該如何實現這個功能呢&#xff1f; 解決方案 我首先想到了AppDelegate里的applicationWillResignActive:方法&#xff0c;在該方法的注釋中就寫到到收到來電或短信時&#xff0c;系統…

iOS運行時-使用Runtime向Category中添加屬性以及運行時介紹

前言 了解OC的都應該知道&#xff0c;在一般情況下&#xff0c;我們是不能向Category中添加屬性的&#xff0c;只能添加方法&#xff0c;但有些情況向&#xff0c;我們確實需要向Category中添加屬性&#xff0c;而且很多系統的API也有一些在Category添加屬性的情況&#xff0c;…