中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Swagger上傳文件的方法

發布時間:2021-02-08 15:54:31 來源:億速云 閱讀:1926 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關使用Swagger上傳文件的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

前言

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

步驟

1. 安裝Swagger

Install-Package Swashbuckle.AspNetCore

使用Swagger上傳文件的方法

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方法:

使用Swagger上傳文件的方法

使用Swagger上傳文件的方法

PUT方法:

使用Swagger上傳文件的方法

使用Swagger上傳文件的方法

原理解析

  使用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

感謝各位的閱讀!關于“使用Swagger上傳文件的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃江县| 万年县| 桃园市| 巍山| 盈江县| 河曲县| 车险| 水富县| 湖南省| 老河口市| 沈丘县| 土默特左旗| 堆龙德庆县| 郯城县| 广平县| 始兴县| 都匀市| 钦州市| 东乡族自治县| 重庆市| 九台市| 新余市| 荆州市| 自贡市| 丰城市| 乐业县| 龙江县| 建德市| 九龙城区| 白水县| 洛阳市| 甘孜| 中江县| 张家川| 东兰县| 亳州市| 会宁县| 丰城市| 安化县| 繁峙县| 邵东县|