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

使用最小?WEB?API?實現(xiàn)文件上傳的Swagger支持

 更新時間:2022年02月20日 10:22:46   作者:My?IO  
這篇文章主要介紹了使用最小?WEB?API?實現(xiàn)文件上傳Swagger支持,我們使用最小?WEB?API?實現(xiàn)文件上傳功能,雖然客戶端訪問是正常的,但是當打開?Swagger?頁面時,沒法使用?Swagger?頁面測試,下面就來一篇支持Swagger的,需要的小伙伴可以參考一下

前言:

上回,我們使用最小 WEB API 實現(xiàn)文件上傳功能《? ?使用最小 WEB API 實現(xiàn)文件上傳會遇到的坑??》,雖然客戶端訪問是正常的,但是當打開 Swagger 頁面時,發(fā)現(xiàn)是這樣的:

沒法使用 Swagger 頁面測試。

一、允許 Content Type

正常的 Swagger 頁面應(yīng)該是這樣的:

看來,我們需要指定 Content Type:

app.MapPost("/upload",
? ? async (HttpRequest request) =>
? ? {
? ? ? ? var form = await request.ReadFormAsync();

? ? ? ? return Results.Ok(form.Files.First().FileName);
? ? }).Accepts<HttpRequest>("multipart/form-data");

結(jié)果,Swagger 頁面變成了這樣,增加了一堆 Form 相關(guān)屬性,唯獨沒有 ??file?? :

看來,只有自定義 Swagger 頁面了。

二、自定義 OperationFilter

在 OpenAPI 3.0 中,文件上傳的請求可以用下列結(jié)構(gòu)描述(https://swagger.io/docs/specification/describing-request-body/file-upload/):

而在 Swashbuckle 中,可以使用 IOperationFilter 接口實現(xiàn)操作篩選器,控制如何定義 Swagger UI 的行為。

在這里,我們將利用 ??RequestBody?? 對象來實現(xiàn)上述的文件上傳的請求結(jié)構(gòu)。

public class FileUploadOperationFilter : IOperationFilter
{
? ? public void Apply(OpenApiOperation operation, OperationFilterContext context)
? ? {
? ? ? ? const string FileUploadContentType = "multipart/form-data";
? ? ? ? if (operation.RequestBody == null ||
? ? ? ? ? ? !operation.RequestBody.Content.Any(x =>
? ? ? ? ? ? x.Key.Equals(FileUploadContentType, StringComparison.InvariantCultureIgnoreCase)))
? ? ? ? {
? ? ? ? ? ? return;
? ? ? ? }?
? ? ? ??
? ? ? ? if (context.ApiDescription.ParameterDescriptions[0].Type == typeof(HttpRequest))
? ? ? ? {
? ? ? ? ? ? operation.RequestBody = new OpenApiRequestBody
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Description = "My IO",
? ? ? ? ? ? ? ? Content = new Dictionary<String, OpenApiMediaType>
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? FileUploadContentType, new OpenApiMediaType
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Schema = new OpenApiSchema
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Type = "object",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Required = new HashSet<String>{ "file" },
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Properties = new Dictionary<String, OpenApiSchema>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "file", new OpenApiSchema()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Type = "string",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Format = "binary"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? };
? ? ? ? }
? ? }
}

然后,在啟動代碼中配置,應(yīng)用此操作篩選器:

builder.Services.AddSwaggerGen(setup =>
{
? ? setup.OperationFilter<FileUploadOperationFilter>();
});

這將呈現(xiàn)如下 Swagger 頁面:

到此這篇關(guān)于使用最小 WEB API 實現(xiàn)文件上傳的Swagger支持的文章就介紹到這了,更多相關(guān)使用最小 WEB API 實現(xiàn)文件上傳 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ASP.NET mvc異常處理的方法示例介紹

    ASP.NET mvc異常處理的方法示例介紹

    這篇文章主要介紹了ASP.NET mvc異常處理的方法,需要的朋友可以參考下
    2014-04-04
  • Asp.Net Couchbase Memcached圖文安裝調(diào)用開發(fā)

    Asp.Net Couchbase Memcached圖文安裝調(diào)用開發(fā)

    本文主要是是如何安裝CouchBase服務(wù)端,以及客戶端如何進行調(diào)用。圖文詳解,大家參考吧
    2013-11-11
  • .NET Core創(chuàng)建一個控制臺(Console)程序

    .NET Core創(chuàng)建一個控制臺(Console)程序

    這篇文章主要為大家詳細介紹了.NET Core如何創(chuàng)建一個控制臺程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • ASP.NET MVC引入JQUERY JQRTE控件

    ASP.NET MVC引入JQUERY JQRTE控件

    經(jīng)過將近兩周的努力,終于將JQUERY的JQRTE文本編輯器控件引入到了asp.net mvc框架中
    2009-06-06
  • 詳解WebApiClient的JsonPatch局部更新

    詳解WebApiClient的JsonPatch局部更新

    這篇文章主要介紹了詳解WebApiClient的JsonPatch局部更新,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • asp.net DataSet進行排序

    asp.net DataSet進行排序

    關(guān)于對已經(jīng)綁定的DataSet的排序的問題。
    2009-07-07
  • MVC異常處理詳解

    MVC異常處理詳解

    這篇文章主要為大家詳細介紹了MVC異常處理的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • ASP.NET批量下載文件的方法

    ASP.NET批量下載文件的方法

    這篇文章主要介紹了ASP.NET批量下載文件的方法,實例匯總了常見的asp.net實現(xiàn)批量下載的方法,具有一定的實用價值,需要的朋友可以參考下
    2014-11-11
  • 限制CheckBoxList控件只能單選實現(xiàn)代碼及演示動畫

    限制CheckBoxList控件只能單選實現(xiàn)代碼及演示動畫

    開發(fā)要求,原本對CheckBoxList控件是用來讓用戶多選的。但現(xiàn)在特殊要求,這個CheckBoxList控件限制只能單選,很多新手朋友可能不知從何下手,為此本文的出現(xiàn)時有必要的了,有需要的朋友可以了解此文
    2013-01-01
  • ASP.NET Core中如何實現(xiàn)重定向詳解

    ASP.NET Core中如何實現(xiàn)重定向詳解

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何實現(xiàn)重定向的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論

竹山县| 金山区| 友谊县| 阿鲁科尔沁旗| 揭西县| 汕头市| 平陆县| 肥乡县| 巩留县| 思南县| 兴山县| 东城区| 上蔡县| 乌兰浩特市| 汕头市| 灵台县| 富蕴县| 安阳市| 二连浩特市| 新密市| 朔州市| 遂平县| 科尔| 多伦县| 甘谷县| 始兴县| 嵊州市| 福泉市| 门源| 郧西县| 汝州市| 淮阳县| 安吉县| 崇阳县| 宜君县| 中宁县| 岑溪市| 江山市| 濉溪县| 同江市| 平陆县|