当内容类型为文本/纯文本时,.NET Core 1.0 Web Api 将请求正文处理为 JSON
Posted
技术标签:
【中文标题】当内容类型为文本/纯文本时,.NET Core 1.0 Web Api 将请求正文处理为 JSON【英文标题】:.NET Core 1.0 Web Api processing request body as JSON when content-type is text/plain 【发布时间】:2018-01-13 04:02:33 【问题描述】:我需要使用的供应商 API 发送一个 POST 请求,内容类型为:text/plain 和正文中的 JSON。
如何在 .net core 1.0 web api 中解析它?
我确定我需要做类似于this(下面的代码)答案的事情,但我不知道如何在 web api 中。
public class RawContentTypeMapper : WebContentTypeMapper
public override WebContentFormat GetMessageFormatForContentType(string contentType)
switch (contentType.ToLowerInvariant())
case "text/plain":
case "application/json":
return WebContentFormat.Json;
case "application/xml":
return WebContentFormat.Xml;
default:
return WebContentFormat.Default;
【问题讨论】:
【参考方案1】:我通过在 Startup.cs
ConfigureServices()
方法中将 text/plain
内容类型添加到 JsonInputFormatter
使其工作,如下所示:
public void ConfigureServices(IServiceCollection services)
services.AddMvc(config =>
foreach (var formatter in config.InputFormatters)
if (formatter.GetType() == typeof(JsonInputFormatter))
((JsonInputFormatter)formatter).SupportedMediaTypes.Add(
MediaTypeHeaderValue.Parse("text/plain"));
);
...
编辑:我为 SNS 客户端 lambda 创建了一个 seed 项目,它解析消息并开箱确认订阅。
【讨论】:
以上是关于当内容类型为文本/纯文本时,.NET Core 1.0 Web Api 将请求正文处理为 JSON的主要内容,如果未能解决你的问题,请参考以下文章
为啥 wsgiref.simple_server 将请求的内容类型报告为“文本/纯文本”,而没有发送?
带有文本/纯文本响应的 API 因“不可接受的内容类型”而失败
无法使用 java 邮件将富文本内容类型的邮件发送到 Outlook