c# - 为什么 Ok() 方法返回 text/plain 媒体类型而不是 application/json?
问题描述
文档 ( https://docs.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?如果不是,我想我可以创建一个带有处理它的方法的基本控制器类。
解决方案
您可以添加一个全局过滤器。在您的Startup.cs
ConfigureServices
方法中,定位services.AddControllers();
并添加如下:
services.AddControllers(config => config.Filters.Add(new ProducesAttribute("application/json")));
现在,这减轻了在控制器级别添加它的需要。
推荐阅读
- c++ - 关于 Vulkan 和使用 GLFW 抽象出 Surface 创建
- python - 在基于类的视图django中通过主键引用用户
- javascript - VS Code 自动完成/智能感知不起作用
- ios - 如何获取服务器地址和远程标识符?
- c# - WPF如何在用户控件和主视图之间绑定数据?
- sql - 使用 T-SQL 查询从 XML 中提取数据
- mysql - Node.JS,获取功能和连接到 XAMPP DB 不起作用
- groovy - 在 0.229 构建 presto 时出现常规异常
- ios - ios13如何实现可扩展企业单点登录
- reactjs - RangeError: Invalid typed array length: -4095 when running my react web app