如何在 ASP.NET Core 3.1 中指定 Swagger 的默认媒体类型?

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

如何在 ASP.NET Core 3.1 中指定 Swagger 的默认媒体类型?

例如我有三种媒体类型选择。我希望默认值为

application/json
,而不是
text/plain
。我怎样才能做到这一点?

asp.net-core swagger
4个回答
11
投票

您可以在应用程序的ConfigureServices 中进行全局配置

services.AddControllers(options =>
    {
        options.Filters.Add(new ProducesAttribute("application/json"));
    })

或者对于多种响应类型:

services.AddControllers(options =>
    {
        options.Filters.Add(new ProducesAttribute("application/json", "text/plain", "text/json"));
    })

7
投票

将属性添加到您的 api 控制器:

 [Produces("application/json")]

2
投票

扩展@feihoa的答案以获得完整的解决方案:

使用两个参数将

[Produces]
属性添加到您的 API 控制器:

  1. 默认媒体类型(即
    application/json
  2. 您想要接受的其他媒体类型的字符串数组(即
    plain/text
    和/或
    plain/json
    和/或
    application/xml
[Produces("application/json", new string[] { "text/plain", "text/json" })]

0
投票

用 [Consumes("application/json")] 装饰 API 控制器解决了这个问题。 microsoft asp.net core 文档指出 [Produces] 过滤器:

强制控制器内的所有操作返回 POCO(普通旧 CLR 对象)或 ObjectResult 及其派生类型的 JSON 格式响应。

[Consumes] 允许 API 接受 json。 另请参阅 https://www.c-sharpcorner.com/article/understanding- Produces-and-consumes-attribute-in-mvc-6/

© www.soinside.com 2019 - 2024. All rights reserved.