我正在开发基于 ASP.NET Core Web API 的 REST 服务,并希望向我的端点添加一个参数“prettify”,以便响应 json 将采用缩进格式并在网络浏览器中可读。
我的问题 - 如何在 ASP.WEB API 核心应用程序中更改每个 Controller 方法的 JSON 格式?
感谢您的帮助。
请您参考如下方法:
感谢@Nkosi 的评论,我找到了解决方案。下面是查找“prettify”参数并向输出 JSON 添加缩进的操作过滤器的代码。如果省略该参数,也会添加缩进。
public class OutputFormatActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
}
public void OnActionExecuted(ActionExecutedContext context)
{
var actionResult = context.Result as ObjectResult;
if (actionResult == null) return;
var paramObj = context.HttpContext.Request.Query["prettify"];
var isPrettify = string.IsNullOrEmpty(paramObj) || bool.Parse(paramObj);
if (!isPrettify) return;
var settings = new JsonSerializerSettings { Formatting = Formatting.Indented };
actionResult.Formatters.Add(new JsonOutputFormatter(settings, ArrayPool<char>.Shared));
}
}
