介绍
这篇文章给大家分享的是有关Asp。网络核心控制器怎么接收原始请求正文内容的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
<强>主要目标强>
在Asp.net核心控制器中,通过自定义格式化程序来映射自定义处理控制器中的“未知”内容。本文将给大家详细介绍关于Asp。网络核心控制器接收原始请求正文内容的相关内容,分享出来供大家参考学习、下面话不多说了,来一起看看详细的介绍吧
<强>简单案例强>
为了演示这个问题,我们用VS2017创建一个默认的Asp.net核心Web Api项目。
,(路线(“Api/(控制器)“)) ,(ApiController) ,public class ValuesController :, ControllerBase { ,(HttpGet) ,public ActionResult< string>,得到(),{ return 才能“ok"; ,} ,(HttpPost) ,(路线(“PostX")) ,public ActionResult< string>, Post ([FromBody], string 价值) ,{ return 才能;价值; ,} 以前,}><强> Json请求
强>我们从最常见的Json输入请求开始。
用户代理:提琴手 主持人:localhost: 5000 内容类型:application/json 内容长度:16请求身体:
{“123456“}通过后台调试和提琴手抓包,我们可以看到请求输入和返回。
后台调试,查看请求输入结果
提琴手查看请求头
提琴手查看返回结果
<强>注意! ! 强>
别忘了[FromBody],有时候会忘的。
引用>
后台行动接收类型为字符串的时候,请求身体只能是字符串,不能传json对象。我演示这个例子时,被这点坑了。如果接收对象是一个类的时候,才可以传json对象。
<强>没有json 强>
虽然传输json数据是最常用的,但有时候我们需要支持普通的文本或者二进制信息。我们将内容类型改为
文本/平原用户代理:,提琴手 主持人:localhost: 5000 内容类型:文本/平原 内容长度:16请求身体:
{“123456“}悲剧的事情来,报404 !
, (HttpPost) ,(路线(“PostText")) ,public async  Task
这适用于一下Http和文本
用户代理:提琴手 主持人:localhost: 5000 内容类型:文本/平原 内容长度:6要读取二进制数据,你可以使用以下内容:
<强>读取字节缓冲区
强>, (HttpPost) ,(路线(“PostBinary")) ,public async Task< byte[]祝辞,PostBinary () ,{ using 才能;(var 小姐=,new MemoryStream (2048)) {才能 await 才能Request.Body.CopyToAsync(女士); return 才能;ms.ToArray (),,//, returns base64 encoded string JSON 结果 ,,} 以前,}Asp。网络核心控制器怎么接收原始请求正文内容