c# - 如何在 swagger UI 中使用 Swashbuckle 设置内容类型 application/json 和 application/xml
问题描述
您好我正在使用 Swashbuckle 我想为请求和响应负载设置内容类型“application/json and application/xml”。谁能帮助我如何根据我的喜好设置内容类型。我已经尝试过这段代码,它适用于请求而不是响应。[HttpPost]
[Consumes(MediaTypeNames.Application.Json)]
[SwaggerResponse(200,null,typeof(Logs))]
[SwaggerResponse(400, null, typeof(Logs))]
public async Task<IActionResult> PostAsync()
解决方案
要配置响应的内容类型,您可以使用过滤器:
public class SwaggerMediaTypesOperationFilter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
foreach (var key in operation.Responses.Keys)
{
FilterMediaTypes(operation.Responses[key].Content);
}
if (operation.RequestBody?.Content != null)
{
FilterMediaTypes(operation.RequestBody.Content);
}
}
private static void FilterMediaTypes(IDictionary<string, OpenApiMediaType> apiMediaTypes)
{
if (apiMediaTypes.TryGetValue(MediaTypeNames.Application.Json, out OpenApiMediaType applicationJson))
{
apiMediaTypes.Clear();
apiMediaTypes.Add(MediaTypeNames.Application.Json, applicationJson);
apiMediaTypes.Add(MediaTypeNames.Application.Xml, applicationJson);
}
}
}
然后,
services.AddSwaggerGen(cfg =>
{
cfg.OperationFilter<SwaggerMediaTypesOperationFilter>();
...
};
推荐阅读
- .htaccess - 重定向“/*”但排除“/myfolder/*”
- php - 一个带有某些索引值的 php 数组
- php - 允许在网站上播放 mp3 文件,但禁止从直接链接下载
- javascript - ParcelJs 在所有文件链接之前添加额外的“/”
- r - R - 分组并为分组结果创建新列
- python-3.x - 无法迭代数组以平均 3 个数字组并与其他 3 个数字组进行比较
- javascript - 使用 vanilla javascript 随机移动 svg 对象
- mapbox - 如何在布局中使用 maki 图标:{ }
- power-automate - 在 Power Automate 中,如何筛选列表并保存结果?
- docker - 如何使用 Docker 和文本编辑器在主机上创建文件以进行本地开发(权限问题)