首页 > 解决方案 > Swagger 如何同时显示同一 Azure 函数的 put 和 get 版本?

问题描述

我有一个带有以下声明的 Azure 函数 (V3)

[Function("GetCases")]
public async Task<HttpResponseData> GetCases([HttpTrigger(AuthorizationLevel.User, "put", "get", Route = "Case/{page}/{pageSize}/{sort}/{filter?}")] HttpRequestData req,
            FunctionContext executionContext, int page, int pageSize, string sort, string filter)
        {
            var logger = executionContext.GetLogger("GetCourtCases");
            logger.LogInformation("GetCourtCases function processed a request.");

            return await g.GetMany(req, page, pageSize, sort, filter);
        }

返回带有排序字符串和可选过滤器的分页数据集。那就是GET操作。使用 PUT,我可以发送一个 JSON 对象,其中包含值列表以及应该搜索这些值的列。

所以基本上我有相同的函数,可以用 GET 或 PUT 调用,其中 PUT 添加信息,如控制台所示: 在此处输入图像描述

问题是,使用 OpenAPI v0.9(最新预览版),swagger 只会显示其中一个配置,具体取决于函数标题中首先指定的配置。

我可以在描述中解释这一点,但是有没有办法告诉 swagger 这既是 PUT 操作又是 GET 操作?

标签: azure-functionsswaggerswagger-uiopenapi

解决方案


简而言之:不,没有办法告诉 Swagger 这个 Function 既是 aGET又是PUT操作。

有关详细信息,请参阅Justin Yoo对 GitHub 问题的评论不支持一个端点的多个操作(例如,GET、POST)

这是正确的。尽管从技术上讲,一种 Function 方法可以采用多个 HTTP 动词/方法,但从语义上讲,它应该是两种不同的操作。

因此,我建议将多个动词/方法彼此分开,并给它们各自的操作 ID。


推荐阅读