欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用Swagger上傳文件

 更新時間:2018年05月14日 16:09:18   作者:編程玩家  
本文將介紹如何使用Swagger來上傳文件。本文分步驟給大家介紹的非常詳細,感興趣的朋友跟隨腳本之家小編一起學習吧

前言

   隨著前后端分離開發(fā)模式的普及,后端人員更多是編寫服務端API接口。調用接口實現文件上傳是一個常見的功能,同時也需要一個選擇文件上傳的界面,可以編寫前端界面上傳,可以使用Postman、curl來模擬上傳請求。上述的方式多多少少有點麻煩。Swagger作為Api說明文檔及調試工具,如果它能提供文件上傳的界面(默認不提供),那會更加方便文件上傳提示,本文將介紹如何使用Swagger來上傳文件。

步驟

1. 安裝Swagger

Install-Package Swashbuckle.AspNetCore

2. 配置Swagger中間件

在Startup.ConfigureServices中添加:

services.AddSwaggerGen(c =>
{
 c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});

在Startup.Configure中添加:

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

3. 編寫API

// POST api/values
[HttpPost]
public void Post(IFormFile file)
{
 //TODO:Save file...
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, IFormFile file)
{
 //TODO:Save file...
}

4. 編寫SwaggerFileUploadFilter

public class SwaggerFileUploadFilter : IOperationFilter
{
 public void Apply(Operation operation, OperationFilterContext context)
 {
  if (!context.ApiDescription.HttpMethod.Equals("POST", StringComparison.OrdinalIgnoreCase) &&
   !context.ApiDescription.HttpMethod.Equals("PUT", StringComparison.OrdinalIgnoreCase))
  {
   return;
  }
  var fileParameters = context.ApiDescription.ActionDescriptor.Parameters.Where(n => n.ParameterType == typeof(IFormFile)).ToList();
  if (fileParameters.Count < 0)
  {
   return;
  }
  operation.Consumes.Add("multipart/form-data");
  foreach (var fileParameter in fileParameters)
  {
   var parameter = operation.Parameters.Single(n => n.Name == fileParameter.Name);
   operation.Parameters.Remove(parameter);
   operation.Parameters.Add(new NonBodyParameter
   {
    Name = parameter.Name,
    In = "formData",
    Description = parameter.Description,
    Required = parameter.Required,
    Type = "file"
   });
  }
 }
}

5. 注冊SwaggerFileUploadFilter

c.OperationFilter<SwaggerFileUploadFilter>();

6. 查看結果

POST方法:

PUT方法:

原理解析

  使用Swagger的文件上傳的關鍵在于SwaggerFileUploadFilter,它繼承于Swashbuckle的IOperationFilter,也即它只作用于Swagger,不會對其它模塊造成影響。

  我們再來看一下SwaggerFileUploadFilter里面的Apply方法的邏輯:

  1. 判斷請求的方法是否為POST或者PUT,如果是其它請求方法,基本不可能是文件上傳操作。

  2. 查找方法中類型為IFormFile的參數。

  3. 設置Consumes為“multipart/form-data”。

  4. 替換IFormFile類型參數描述中的In為formData、Type為File。

源碼地址

https://github.com/ErikXu/.NetCoreTips/tree/master/SwaggerFileUpload

參考資料

http://www.talkingdotnet.com/how-to-upload-file-via-swagger-in-asp-net-core-web-api/

總結

以上所述是小編給大家介紹的如何使用Swagger上傳文件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • IsPostBack原理的介紹

    IsPostBack原理的介紹

    本篇文章,小編將為大家介紹,關于IsPostBack的原理,有需要的朋友可以參考一下
    2013-04-04
  • .NET實現XML與DataTable互轉的實例代碼

    .NET實現XML與DataTable互轉的實例代碼

    .NET實現XML與DataTable互轉的實例代碼,需要的朋友可以參考一下
    2013-03-03
  • 淺談對Lambda表達式的理解

    淺談對Lambda表達式的理解

    “Lambda 表達式”(lambda expression)是一個匿名函數,Lambda表達式基于數學中的λ演算得名,直接對應于其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。Lambda表達式可以表示閉包(注意和數學傳統(tǒng)意義上的不同)。
    2015-07-07
  • .net 通過URL推送POST數據具體實現

    .net 通過URL推送POST數據具體實現

    這篇文章主要介紹了.net 通過URL推送POST數據具體實現,有需要的朋友可以參考一下
    2013-12-12
  • 詳解CentOS 7.4下如何部署Asp.Net Core結合consul

    詳解CentOS 7.4下如何部署Asp.Net Core結合consul

    這篇文章主要介紹了詳解CentOS 7.4下如何部署Asp.Net Core結合consul,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • .NET Core中依賴注入AutoMapper的方法示例

    .NET Core中依賴注入AutoMapper的方法示例

    這篇文章主要給大家介紹了關于.NET Core中依賴注入AutoMapper的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • C#使用Aspose.Cells導出excel

    C#使用Aspose.Cells導出excel

    這篇文章主要為大家詳細介紹了C#使用Aspose.Cells導出excel,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • ASP.NET中常用的用來輸出JS腳本的類

    ASP.NET中常用的用來輸出JS腳本的類

    在ASP.NET中我們經常需要輸出一些JS腳本,比如彈出一個警告窗口,返回到歷史頁面等JS功能,我看到網上好多這方面的代碼,以下代碼是其中之一。
    2010-02-02
  • asp.net實現上傳文件顯示本地絕對路徑的實例代碼

    asp.net實現上傳文件顯示本地絕對路徑的實例代碼

    asp.net實現上傳圖片顯示本地絕對路徑圖片,其實這個還是得用<DIV></DIV>去顯示圖片會更好一點!用js實現圖片的比例壓縮讓圖片一樣能夠很清楚!下面把代碼貼出來
    2013-07-07
  • GridView自定義刪除操作的具體方法

    GridView自定義刪除操作的具體方法

    今天,我們這里要說的就是在GridView里面如何新添加一行“刪除”列,如何刪除前彈出通知等操作,有需要的朋友可以參考一下
    2013-09-09

最新評論