文档 ( https://learn.microsoft.com/en-us/aspnet/core/web-api/advanced/formatting?view=aspnetcore-3.1 ) 指出,使用 Ok()
方法返回的结果默认格式化为 json。我认为这也意味着它返回为 application/json 但使用 fiddler 我发现这对我来说并非如此。
问题是,我返回一个已经格式化为 json 的字符串。这是问题所在吗?如何让它以 application/json 媒体类型返回?
编辑:
我刚刚读到 Ok() 在提供字符串时确实返回 text/plain 而不是 application/json,这使得它无法用于返回原始 json。答案似乎是返回 Content(rawJson, "application/json")
。
这确实解决了我的问题,但现在我想知道是否有一种方法可以将媒体类型全局设置为始终为 json?如果没有,我想我可以创建一个基本 Controller 类,并提供处理它的方法。
最佳答案
您可以添加全局过滤器。在 Startup.cs
ConfigureServices
方法中,找到 services.AddControllers();
并添加如下内容:
services.AddControllers(config => config.Filters.Add(new ProducesAttribute("application/json")));
现在,这减少了在 Controller 级别添加它的需要。
关于c# - 为什么 Ok() 方法返回 text/plain 媒体类型而不是 application/json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62309030/