<<ABP框架>> Swagger UI 集成

来源:http://www.cnblogs.com/kid1412/archive/2016/10/30/6013979.html
-Advertisement-
Play Games

文檔目錄 本節內容: 簡介 Asp.net Core 安裝 安裝Nuget包 配置 測試 Asp.net 5.x 安裝 安裝Nuget包 配置 測試 安裝 安裝Nuget包 配置 測試 安裝 安裝Nuget包 配置 測試 簡介 來自它的網頁:“...使用一個Swagger-enabled Api,你 ...


文檔目錄

 

本節內容:

 

簡介

來自它的網頁:“...使用一個Swagger-enabled Api,你將獲取交互文檔,客戶端SDK的創建和暴露。”。

 

Asp.net Core

安裝

基於Asp.net Core應用,你可以很方便的把Swagger集成到你的ABP里。

 

安裝Nuget包

在你的Web項目里安裝Swashbuckle包。

 

配置

在你的Startup.cs文件里,在ConfigureServices方法里添加代碼,配置入Swagger:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    //your other code...
    
    services.AddSwaggerGen();
    
    //your other code...
}

然後,為使用Swagger,在Startup.cs文件里,在Configure方法里添加如下代碼:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    //your other code...

    app.UseSwagger();
    app.UseSwaggerUi(); //URL: /swagger/ui
}

最後 ,當從Swagger UI測試動態Web Api服務時,為了發送CSRF令牌,你需要把Swagger UI的 index.html文件添加到你的項目里,它應當放置在“wwwroot\swagger\ui”文件夾下,然後你需要在index.html里,修改Swagger UI的onComplete方法,如下所示:

onComplete: function(swaggerApi, swaggerUi){
  if(typeof initOAuth == "function") {
    initOAuth({
      clientId: "your-client-id",
      clientSecret: "your-client-secret-if-required",
      realm: "your-realms",
      appName: "your-app-name",
      scopeSeparator: " ",
      additionalQueryStringParams: {}
    });
  }

  if(window.SwaggerTranslator) {
    window.SwaggerTranslator.translate();
  }

  var csrfToken = abp.security.antiForgery.getToken();
  var csrfCookieAuth = new SwaggerClient.ApiKeyAuthorization(abp.security.antiForgery.tokenHeaderName, csrfToken, "header");
  swaggerUi.api.clientAuthorizations.add(abp.security.antiForgery.tokenHeaderName, csrfCookieAuth);

}

查看Swashbuckle文檔獲取更多配置選項。

 

測試

到此就完成了,你可以瀏覽Swagger UI:“/swagger/ui/index“。

 

Asp.net 5.x

安裝

基於應用,你可以很方便的把Swagger集成到你的ABP里。

 

安裝Nuget包

在你的WebApi項目(或Web項目)里安裝Swashbuckle.core包(kid1412註:此處應該是Swashbuckle包,Asp.net Core應用里應該安裝Swashbuckle.Core包)。

 

配置

為Swagger添加配置代碼你的模塊的到Initialize方法里,例如:

public class SwaggerIntegrationDemoWebApiModule : AbpModule
{
    public override void Initialize()
    {
        //your other code...

        ConfigureSwaggerUi();
    }

    private void ConfigureSwaggerUi()
    {
        Configuration.Modules.AbpWebApi().HttpConfiguration
            .EnableSwagger(c =>
            {
                c.SingleApiVersion("v1", "SwaggerIntegrationDemo.WebApi");
                c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
            })
            .EnableSwaggerUi(c =>
            {
                c.InjectJavaScript(Assembly.GetAssembly(typeof(AbpProjectNameWebApiModule)), "AbpCompanyName.AbpProjectName.Api.Scripts.Swagger-Custom.js");
            });
    }
}

 

註意:在配置Swagger ui時我們註入了一個名為“Swagger-Custom.js”的javascript文件,這個腳本文件在從Swagger ui里測試api服務時,添加CSRF令牌,同時你也需要在你的WebApi項目里添加這個文件,當註入它時,使用它的邏輯名稱來註入javascript方法,它的內容如下所示:

var getCookieValue = function(key) {
    var equalities = document.cookie.split('; ');
    for (var i = 0; i < equalities.length; i++) {
        if (!equalities[i]) {
            continue;
        }

        var splitted = equalities[i].split('=');
        if (splitted.length !== 2) {
            continue;
        }

        if (decodeURIComponent(splitted[0]) === key) {
            return decodeURIComponent(splitted[1] || '');
        }
    }

    return null;
};

var csrfCookie = getCookieValue("XSRF-TOKEN");
var csrfCookieAuth = new SwaggerClient.ApiKeyAuthorization("X-XSRF-TOKEN", csrfCookie, "header");
swaggerUi.api.clientAuthorizations.add("X-XSRF-TOKEN", csrfCookieAuth);

 

查看Swashbuckle文檔獲取更多配置選項。

 

測試

到此就完成了,你可以瀏覽Swagger UI:“/swagger/ui/index“。

你可以看到所有的Web Api控制器(還有動態Web Api控制器),並可以測試它們。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 直入正題,用JS實現一個簡單的打地鼠游戲 因為功能比較簡單就直接裸奔JS了,先看看效果圖,或者 線上玩玩 吧 如果點擊顏色比較深的那個(俗稱壞老鼠),將扣分50;如果點擊顏色比較淺的那個(俗稱好老鼠),將得分100 實現 老鼠好像有點難畫,又不想用圖片,就直接用CSS畫個簡單的圖代表老鼠和坑吧 ht ...
  • 動畫原理 SVG動畫,就是元素的屬性值關於時間的變化。 如下圖來說,元素的某個屬性值的起始值(from)到結束值(to)在一個時間段(duration)根據時間函數(timing-function)計算出每一幀(frame)的插值(interpolation)作為變換的行為。 PS:SVG動畫是幀動 ...
  • 一.常用的骨灰級清除浮動 解讀浮動閉合最佳方案:clearfix 二.唯一使用斜杠/分割的關鍵字 分割的分別是 字體大小 與 行高 ,其他關鍵是用空白符分割。 三.內聯元素相連之間存在間隙 原因:內聯元素是當做字體來處理的,字體之間是有間隔的 解決: 1.多個標簽寫在一行 2.將要閉合標簽的地方與開 ...
  • Output子句很方便,多數情況下可以省略了更新後插入或者刪除後插入操作表,將2個語句變成1個語句操作。不管從語句美觀還是效率上都是有不錯的提升, 但是對於Output自身,也是有一些限制的。 從文檔上看。主要有以下三點需要註意 1 Output into 的對象不能含有觸發器 2 Output i ...
  • 修改CentOS-Media.repo時 每行代碼開始不要有空格[c6-media] #庫名稱 name=CentOS-$releasever - Media #名稱描述 baseurl=file:///media/centos/ #yum源目錄,源地址 gpgcheck=1 #檢查GPG-KEY,... ...
  • 1.瞭解byzanz截取動態效果圖工具 byzanz能製作文件小,清晰的GIF動態效果圖,不足就是,目前只能通過輸入命令方式來錄製。 byzanz主要的參數選項有: -d, --duration=SECS 動畫的時間 (預設:10 秒) -e, --exec=COMMAND Command to e ...
  • 文檔目錄 本節內容: 簡介 AbpController基類 本地化 其它 過濾 異常處理和結果包裝 審計日誌 驗證 授權 工作單元 反偽造 模型綁定器 本地化 其它 異常處理和結果包裝 審計日誌 驗證 授權 工作單元 反偽造 簡介 ABP通過nuget包Abp.Web.Mvc集成到Asp.net M ...
  • 經過一個多月晚上的時間,終於把開源物聯網通訊框架ServerSuperIO成功移植到Windows10 IOT上,暫時全名:ServerSuperIO.WinIOT(以後可能還會移植到Ubuntu上)。以後可以把ServerSuperIO框架應用到嵌入式設備上,移植的成功具有標誌性意義,意味著軟體和... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...