最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用Swagger上傳文件

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

前言

   隨著前后端分離開發(fā)模式的普及,后端人員更多是編寫服務(wù)端API接口。調(diào)用接口實(shí)現(xiàn)文件上傳是一個(gè)常見的功能,同時(shí)也需要一個(gè)選擇文件上傳的界面,可以編寫前端界面上傳,可以使用Postman、curl來模擬上傳請求。上述的方式多多少少有點(diǎn)麻煩。Swagger作為Api說明文檔及調(diào)試工具,如果它能提供文件上傳的界面(默認(rèn)不提供),那會(huì)更加方便文件上傳提示,本文將介紹如何使用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. 查看結(jié)果

POST方法:

PUT方法:

原理解析

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

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

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

  2. 查找方法中類型為IFormFile的參數(shù)。

  3. 設(shè)置Consumes為“multipart/form-data”。

  4. 替換IFormFile類型參數(shù)描述中的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/

總結(jié)

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

相關(guān)文章

最新評論

山东省| 天津市| 内乡县| 汉源县| 文安县| 清徐县| 屯门区| 新竹县| 东台市| 闻喜县| 安新县| 韶关市| 林甸县| 安岳县| 昌宁县| 唐河县| 尉氏县| 克东县| 化隆| 偃师市| 繁峙县| 平江县| 延津县| 屯留县| 乌拉特中旗| 金坛市| 双牌县| 乐昌市| 星座| 东光县| 沂源县| 佛学| 托克逊县| 泗阳县| 阳朔县| 灵宝市| 柏乡县| 柳河县| 甘德县| 澎湖县| 恩平市|