.Net core Swagger使用FromForm时不显示参数说明

问题描述 投票:0回答:1

我有一个控制器方法:

        /// <summary>
        /// Test api
        /// </summary>
        /// <param name="fromForm">from form</param>
        /// <returns>result</returns>
        [HttpPost("test")]
        public string Test([FromForm] string fromForm)
        {
            return "result";
        }

然后我使用 Swashbuckle 作为 swagger UI,但是 swagger UI 中没有显示“来自表单”的描述,我在 Swashbuckle 版本 5.5 和 6.1 之间切换,但结果仍然相同,

删除FromForm时描述正确显示,我尝试使用SwaggerRequestBody注释,还在Startup.cs中添加了InclusionXmlComment,并在csproj中添加了GenerateDocumentationFile 也一样,但还是没有运气

编辑:这是我从 swagger.json 得到的结果,注意到参数位于“requestBody”而不是“parameters”中,

"requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                  "type": "object",
                "properties": {
                  "fromForm": {
                    "type": "string"
                  },
                }
              },
              "encoding": {
                "fromForm": {
                  "style": "form"
                }
              }
            }
          }
        },

编辑2: 我浏览了 OpenApi 代码,发现使用 FromForm 时,我的参数位于 RequestBody 属性内,类型为 OpenApiEncoding。不使用FromForm时,参数位于OpenApiParameter类型的Parameters属性内,并且没有代码在OpenApiEncoding中编写描述

.net swagger swashbuckle
1个回答
0
投票

我的快速而肮脏的解决方案是添加一个

SwaggerSchema
属性。缺点是文档不是最漂亮的(没有描述标题等),但它确实出现了。

public string Test([FromForm, SwaggerSchema("from form description")] string fromForm)
© www.soinside.com 2019 - 2024. All rights reserved.