91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何使用最小WEB?API實現文件上傳

發布時間:2022-02-21 09:13:06 來源:億速云 閱讀:187 作者:iii 欄目:開發技術

這篇文章主要介紹“如何使用最小WEB API實現文件上傳”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“如何使用最小WEB API實現文件上傳”文章能幫助大家解決問題。

前言:

我們使用最小 WEB API 實現文件上傳功能,雖然客戶端訪問是正常的,但是當打開 Swagger 頁面時,發現是這樣的:

如何使用最小WEB?API實現文件上傳

沒法使用 Swagger 頁面測試。

一、允許 Content Type

正常的 Swagger 頁面應該是這樣的:

如何使用最小WEB?API實現文件上傳

看來,我們需要指定 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");

結果,Swagger 頁面變成了這樣,增加了一堆 Form 相關屬性,唯獨沒有 file :

如何使用最小WEB?API實現文件上傳

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

二、自定義 OperationFilter

在 OpenAPI 3.0 中,文件上傳的請求可以用下列結構描述:

如何使用最小WEB?API實現文件上傳

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

在這里,我們將利用 RequestBody 對象來實現上述的文件上傳的請求結構。

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"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };
        }
    }
}

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

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

這將呈現如下 Swagger 頁面:

如何使用最小WEB?API實現文件上傳

關于“如何使用最小WEB API實現文件上傳”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

赣州市| 屯门区| 英超| 定襄县| 重庆市| 涞水县| 凤阳县| 屯门区| 玉环县| 崇文区| 吴川市| 门头沟区| 鹰潭市| 富平县| 天长市| 中方县| 阆中市| 碌曲县| 平湖市| 云和县| 图们市| 辽源市| 土默特右旗| 和林格尔县| 章丘市| 梅河口市| 额尔古纳市| 洪湖市| 木兰县| 维西| 合川市| 当阳市| 那曲县| 奉节县| 阜城县| 灵山县| 姜堰市| 水城县| 龙游县| 邵东县| 五家渠市|