1. 程式人生 > >ASP.NET Core Web API中使用Swagger

ASP.NET Core Web API中使用Swagger


本節導航

  • Swagger介紹
  • 在ASP.NET CORE 中的使用swagger

  在軟體開發中,管理和測試API是一件重要而富有挑戰性的工作。在我之前的文章《研發團隊,請管好你的API文件》也專門闡述了通過文件管理工具,來保證API文件和程式碼的一致性,這樣更加有助於團隊的協作。

  以往我們總是通過第三方平臺工具來管理我們的API文件,如eolinker。在測試方面,我們也會依賴fiddler,PostMan這樣的工具。

  Swagger兼具了API文件管理和測試的功能,而且保證了程式碼和文件的一致性。它提供了無需任何實現邏輯的RESTfulAPI的UI表示。它允許使用者在沒有任何程式碼訪問的情況下了解服務的功能,並減少建立服務文件的時間。

1 Swagger介紹

  Swagger兼具了API文件管理和測試的功能,而且保證了程式碼和文件的一致性。它提供了無需任何實現邏輯的RESTfulAPI的UI表示。它允許使用者在沒有任何程式碼訪問的情況下了解服務的功能,並減少建立服務文件的時間。

  swagger使用swagger工具基於我們編寫的服務程式碼生成的swagger.json檔案來生成文件管理介面。此檔案描述服務的功能,即服務支援多少方法,並提供有關方法引數的資訊。使用這個檔案,SwaggerUI生成客戶機程式碼。下面是swagger.json檔案的一個示例。

{
    "swagger": "2.0",
    "info": {
        "version": "1.0",
        "title": "My Demo API"
    },
    "paths": {
        "/api/Values": {
            "get": {
                "tags": ["Values"],
                "summary": "Get values",
                "operationId": "Get",
                "consumes": [],
                "produces": ["text/plain", "application/json", "text/json"],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "uniqueItems": false,
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": ["Values"],
                "operationId": "Post",
                "consumes": ["application/json-patch+json", "application/json", "text/json", "application/*+json"],
                "produces": [],
                "parameters": [{
                    "name": "value",
                    "in": "body",
                    "required": false,
                    "schema": {
                        "type": "string"
                    }
                }],
                "responses": {
                    "200": {
                        "description": "Success"
                    }
                }
            }
        }
    },
    "definitions": {}
}

  在APS.NET Core Web API 中,我們可以用Swashbuckle.AspNetCore 和 NSwag這兩個包來實現Swagger,而且二者都是github上開源的。此外,nswag還提供了生成typescript客戶端程式碼的方法以及用於API的服務程式碼。

1.2 TPL

  任務並行庫(TPL)是System.Threading和System.Threading.Tasks名稱空間中的一組公共型別和API。

  TPL動態地擴充套件併發度,以最有效地使用所有可用的處理器。通過使用TPL,您可以最大限度地提高程式碼的效能,同時專注於您的程式碼的業務實現。

  從.NET Framework 4開始,TPL是編寫多執行緒和並行程式碼的首選方式。

2 在ASP.NET CORE 中的使用swagger

  這裡以Swashbuckle.AspNetCore來實現。

  以下是在ASP.net Core Web API中配置Swagger的步驟:

1. 安裝Swashbuckle.AspNetCore

PM> Install-Package Swashbuckle.AspNetCore

2. 配置swagger中介軟體

  要將swagger middle新增到請求管道,需要在startup類的configureService方法中新增swaggergen方法。在這裡,我們可以定義一個或多個swagger XML文件。

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().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1.0", new Info { Title = "My Demo API", Version = "1.0" });
                c.IncludeXmlComments(System.IO.Path.Combine(System.AppContext.BaseDirectory, "ZhiKeCore.API.xml"));
            });
        }

  如果要啟用這個中介軟體,我們還需要在startup類的configure方法中呼叫useswagger方法。在這裡,我們還需要配置swagerendpoint來生成UI。useswagegrui將新增一個靜態檔案中介軟體來載入swager.json檔案。

// 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();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc();

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1.0/swagger.json", "My Demo API (V 1.0)");
            });
        }

  以上是配置swagger的基本步驟,如果我們想使用Visual Studio在開發環境中啟動Swagger,還需要做一點設定。選擇專案-屬性-Debug,修改啟動瀏覽器(Launch Browser)的值為swagger。

  當我們啟動程式以後,可以看到如下介面:

  正如我們在這裡看到的,它對每個HTTP動詞使用不同的顏色程式碼。當我們單擊任何操作方法時,它將詢問引數詳細資訊,當我們單擊“非常”按鈕時,它將向Web API傳送請求。

  在測試我們的WebAPI時,Swagger只需要最少的配置即可。

  那麼,如果我們想要在UI上顯示程式碼註釋應該怎麼辦呢?

  在.NET Core中,我們可以通過在專案屬性視窗的“構建”選項卡下設定“XML文件檔案”屬性來獲取XML註釋。

  預設情況下,Swagger UI不顯示此文件。我們需要傳遞包含exmlcomments的路徑。

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
       // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1.0", new Info { Title = "My Demo API", Version = "1.0" });
                c.IncludeXmlComments(System.IO.Path.Combine(System.AppContext.BaseDirectory, "ZhiKeCore.API.xml"));
            });
        }

參考

  •   https://www.c-sharpcorner.com/article/test-your-asp-net-core-web-api-with-swagger/
  •   http://www.zhikestreet.com/Home/Detail/6/

關注
  請關注微信公眾號智客坊。

相關推薦

ASP.NET Core Web API使用Swagger

本節導航 Swagger介紹 在ASP.NET CORE 中的使用swagger   在軟體開發中,管理和測試API是一件重要而富有挑戰性的工作。在我之前的文章《研發團隊,請管好你的API文件》也專門闡述了通過文件管理工具,來保證API文件和程式碼的一致性,這樣更加有助於團隊的協作。   以往我們總是

使用 Swagger 自動生成 ASP.NET Core Web API 的文檔、在線幫助測試文檔(ASP.NET Core Web API 自動生成文檔)

地址 .cn 名稱 cor 生成文檔 def pos 構建 回車 對於開發人員來說,構建一個消費應用程序時去了解各種各樣的 API 是一個巨大的挑戰。在你的 Web API 項目中使用 Swagger 的 .NET Core 封裝 Swashbuckle 可以幫助你創建良好

如何在ASP.NET Core Web API測試使用Postman

e30 googl 選項卡 for 並運行 讓我 結合 pos lis 使用Postman進行手動測試 如果您是開發人員,測試人員或管理人員,則在構建和使用應用程序時,有時了解各種API方法可能是一個挑戰。 使用帶有.NET Core的Postman為您的Web API生

ASP.NET Core Web API 整合測試使用 Bearer Token

在 ASP.NET Core Web API 整合測試一文中, 我介紹了ASP.NET Core Web API的整合測試.  在那裡我使用了測試專用的Startup類, 裡面的配置和開發時有一些區別, 例如裡面去掉了使用者身份驗證相關的中介軟體. 但是有些被測試的行為裡面需要用到身份/授權資訊. 所以

ASP.Net Core Web Api模板移除MVC Razor依賴項

前言 :本篇文章,我將會介紹如何在不包括MVC / Razor功能和包的情況下,新增最少的依賴項到ASP.NET Core Web API專案中。     一、MVC   VS WebApi (1)在ASP.NET的早期版本中,MVC和Web API技術棧是完全

ASP.NET Core Web API 最小化項目

asp新建項目打開VS2017 新建一個ASP.NET Core 應用程序 (.NET Core)項目,命名為miniwebapi。確定後選擇Web API 模板,並將“身份驗證”設置為“不進行身份驗證”。然後確定就創建好了項目,默認項目的csproj 文件內容如下:<Project Sdk="Micr

品嘗阿裏雲容器服務:初步嘗試ASP.NET Core Web API站點的Docker自動化部署

asp.net title build 阿裏雲服務器 arm web 容器服務 倉庫 acs 部署場景是這樣的,我們基於 ASP.NET Core 2.0 Preview 1 開發了一個用於管理緩存的 Web API ,想通過阿裏雲容器服務基於 Docker 部署為內網服務

ASP.NET CORE WEB API DEMO 01

dsi del turn adr arch pda host result arc using System; using System.Collections.Concurrent; using System.Collections.Generic; namespac

ASP.NET Core Web API實現圖片下載

前端訪問下載圖片API下載圖片。 一、ASP.NET Core Web API程式碼 方案一: [Route("api/[controller]")] [ApiController

ASP.NET Core 實戰:使用 ASP.NET Core Web API 和 Vue.js,搭建前後端分離框架

前言         這幾年前端的發展速度就像坐上了火箭,各種的框架一個接一個的出現,需要學習的東西越來越多,分工也越來越細,作為一個 .NET Web 程式猿,多瞭解瞭解行業的發展,讓自己擴展出新的技能樹,對自己的職業發展還是

Asp.Net Core Web Api圖片上傳(一)整合MongoDB儲存例項教程

Asp.Net Core Web Api圖片上傳及MongoDB儲存例項教程(一) 圖片或者檔案上傳相信大家在開發中應該都會用到吧,有的時候還要對圖片生成縮圖。那麼如何在Asp.Net Core Web Api實現圖片上傳儲存以及生成縮圖呢?今天我就使用MongoDB作為圖片儲存,然後使用SixLabors

加速ASP.NET Core WEB API應用程式——第2部分

目錄 應用程式生產力 非同步設計模式 資料規範化與SQL查詢效率 NCHAR與NVARCHAR 使用MSSQL伺服器的全文引擎 儲存過程 優化儲存過程 預編譯和重用儲存過程執行計劃 使用Entity Framework Core進行全文搜尋 Entity

加速ASP.NET Core WEB API應用程式——第1部分

目錄 介紹 建立測試RESTful WEB API服務 應用程式架構 資料庫 建立ASP.NET核心WEB API應用程式 使用實體框架核心進行資料庫訪問 非同步設計模式 儲存庫 儲存庫實現 服務 服務介面 服務的實現 產品和價格表之間的資料完

【譯】使用Jwt身份認證保護 Asp Net Core Web Api

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

ASP.NET Core Web API 索引 (更新ASPNET Core和EF Core視訊)

GraphQL [視訊] 使用ASP.NET Core 開發 GraphQL 伺服器  GraphQL其它 RESTful API Identity Server 4 Identity Server 4 - Hybrid Flow ASP.NET Core

ASP.NET Core Web API 整合測試

本文需要您瞭解ASP.NET Core Web API 和 xUnit的相關知識. 整合測試 vs 單元測試 測試金字塔, 但它只是一個指導性的概念. 如果所單元測試是對一個元件進行隔離測試的話, 那麼整合測試則是測試多個元件共同協作產生出期待的結果. 單元測試通常很快. 而整合測試則

ASP.NET Core Web API 專案裡無法訪問(wwwroot)下的檔案

解決辦法:在“ Startup.cs ” 檔案裡的 Configur方法裡新增一句程式碼“ app.UseStaticFiles() ”,這樣就可以訪問wwwroot下的檔案了。 - 方法程式碼是

Gitlab CI 自動部署 asp.net core web api 到Docker容器

然後可以到官網下載net core 1.1 on MacOS,完成之後可以在命令列輸入 dotnet --version 來檢測當前的版本。 初始化專案並執行 通過3個命領我們可以完成初始化專案並執行的全過程: dotnet new|restore|run。 dotnet 框架預設提供一些初始化的專案模板,

支援多個版本的ASP.NET Core Web API

基本配置及說明 版本控制有助於及時推出功能,而不會破壞現有系統。 它還可以幫助為選定的客戶提供額外的功能。 API版本可以通過不同的方式完成,例如在URL中新增版本或通過自定義標頭和通過Accept-Header作為查詢字串引數。 在這篇文章中,我們來看看如何支援多版本的A

ASP.NET Core Web API下事件驅動型架構的實現(一):一個簡單的實現

很長一段時間以來,我都在思考如何在ASP.NET Core的框架下,實現一套完整的事件驅動型架構