主要目标
在Asp.net Core控制器中,通过自定义格式化程序来映射自定义处理控制器中的“未知”内容。
在Asp.net Core控制器中,通过自定义格式化程序来映射自定义处理控制器中的“未知”内容。
简单案例
为了演示这个问题,我们用VS2017创建一个默认的Asp.net Core Web Api项目。
[Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase{ [HttpGet] public ActionResult<string> Get() { return "ok"; } [HttpPost] [Route("PostX")] public ActionResult<string> Post([FromBody] string value) { return value; } }
为了演示这个问题,我们用VS2017创建一个默认的Asp.net Core Web Api项目。
[Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase{ [HttpGet] public ActionResult<string> Get() { return "ok"; } [HttpPost] [Route("PostX")] public ActionResult<string> Post([FromBody] string value) { return value; } } Json请求
我们从最常见的json输入请求开始。
User-Agent: Fiddler Host: localhost:5000 Content-Type: application/json Content-Length: 16
请求body:
{"123456"} 通过后台调试和fiddler抓包,我们可以看到请求输入和返回。
后台调试,查看请求输入结果
fiddler查看请求header
fiddler查看返回结果
注意!!
- 别忘了[FromBody],有时候会忘的。
- 后台action接收类型为string的时候,请求body只能是字符串,不能传json对象。我演示这个例子时,被这点坑了。如果接收对象是一个类的时候,才可以传json对象。
我们从最常见的json输入请求开始。
User-Agent: Fiddler Host: localhost:5000 Content-Type: application/json Content-Length: 16 请求body:
{"123456"} 通过后台调试和fiddler抓包,我们可以看到请求输入和返回。
后台调试,查看请求输入结果
fiddler查看请求header
fiddler查看返回结果
注意!!
- 别忘了[FromBody],有时候会忘的。
- 后台action接收类型为string的时候,请求body只能是字符串,不能传json对象。我演示这个例子时,被这点坑了。如果接收对象是一个类的时候,才可以传json对象。
