在测试ASP.NET Core API 项目的时候,发现后台接口参数为类型对象,对于PostMan和Ajax的Post方法传Json数据都获取不到相应的值,后来在类型参数前面加了一个[FromBody]属性才获取到。但是我看微软官方文档演示代码中并没有添加[FromBody],难道是微软官方文档写错了,按道理应该不会。Google里看到一片篇文章里的一个细节,又追回微软官方文档发现可行,于是记下去掉这个烦人的[FromBody]过程

修改之前测试

后台通过Visual Studio生成ASP.NET Core API项目之后,在Controller里添加如下代码

        // POST: api/Todo
[HttpPost]
public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem todoItem)
{
_context.TodoItems.Add(todoItem);
await _context.SaveChangesAsync(); return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
}

postMan调用

如图所示,name的值为walk dog,后台api获取结果如第三张图所示:

Jquery调用

如图所示,前端会将页面填写的值进行序列化,但是后端依然获取不到值:

返回结果

不论是postMan调用还是ajax调用,后台都获取不到name值和isComplete的值

增加[FromBody]

测试如下:发现可以获取到相应的值,但是如果每个Post方法并含有类型参数的请求前面都添加这么一个属性,相比以前的Asp.Net Api 操作有点不习惯,甚至多余

进行修改

增加一个Contrller,命名为BaseController, 并继承Controller ,代码如下所示:

   public class BaseController: Controller
{
}

然后在BaseController类上增加属性[ApiController],最终如下图所示:

最后修改所有API控制器的父类,改为继承BaseController

修改之后测试

如图所示,此时可以看到已经没有[FromBody]了,需要注意一点是请求的ContentType必须为:application/json

总结

如果没有该[ApiController]属性,则需要显式定义绑定源属性。如果没有[ApiController]或其他绑定源属性[FromQuery],ASP.NET Core运行时会尝试使用复杂的对象模型绑定器。复杂对象模型绑定器从值提供程序(具有已定义的顺序)中提取数据。例如,'body model binder'总是选择加入。

ASP.NET Core API 接收参数去掉烦人的 [FromBody]的更多相关文章

  1. 详解ASP.NET Core API 的Get和Post请求使用方式

    上一篇文章帮助大家解决问题不彻底导致博友使用的时候还是遇到一些问题,欢迎一起讨论.所以下面重点详细讲解我们常用的Get和Post请求( 以.net core2.2的Http[Verb]为方向 ,推荐该 ...

  2. ASP.NET CORE API Swagger+IdentityServer4授权验证

    简介 本来不想写这篇博文,但在网上找到的文章博客都没有完整配置信息,所以这里记录下. 不了解IdentityServer4的可以看看我之前写的入门博文 Swagger 官方演示地址 源码地址 配置Id ...

  3. ASP.NET Core API ——Dapper的使用

    ASP.NET Core API ——Dapper的使用 简介:Dapper是一个ORM框架,负责数据库和程序语言之间的映射. 使用步骤: l  创建一个IDBConnection的接口对象 l  编 ...

  4. ASP.NET Core API总结(一)

    ASP.NET Core API 问题:当应用收到一个http请求之后,API应用程序是怎么一步步执行的. 注册服务——构造容器——使用服务——创建对象 1.         创建一个新的API之后, ...

  5. 【转】【Stackoverflow好问题】去掉烦人的“!=null"(判空语句)

    [Stackoverflow好问题]去掉烦人的“!=null"(判空语句) 问题 为了避免空指针调用,我们经常会看到这样的语句   ...if (someobject != null) { ...

  6. 测试 ASP.NET Core API Controller

    本文需要您了解ASP.NET Core MVC/Web API, xUnit以及Moq相关知识. 这里有xUnit和Moq的介绍: https://www.cnblogs.com/cgzl/p/917 ...

  7. 使用TestServer测试ASP.NET Core API

    今儿给大家分享下,在ASP.NET Core下使用TestServer进行集成测试,这意味着你可以在没有IIS服务器或任何外部事物的情况下测试完整的Web应用程序.下面给出示例: public Sta ...

  8. 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

    跟同事合作前后端分离项目,自己对 WebApi 的很多知识不够全,虽说不必要学全栈,可是也要了解基础知识,才能合理设计接口.API,方便与前端交接. 晚上回到宿舍后,对 WebApi 的知识查漏补缺, ...

  9. Asp .net core api+Entity Framework 实现数据的存取到数据库中

    最近在学dotNetCore 所以尝试了一下api 这个功能 不多说了大致实现如下 1.用vs2017建立一个Asp.net  Core Web 应用程序 在弹出的对话框中选择 Web API 项目名 ...

随机推荐

  1. 截取字段split

    172.0.0.1String[] splitAddress=qip.split("\\.");//--172001 String ip=splitAddress[0]+" ...

  2. python练习题-day23

    1.人狗大战(组合) class Person: def __init__(self,name,hp,aggr,sex,money): self.name=name self.hp=hp self.a ...

  3. 图解:window与BOM的关系

    window与BOM的关系: 1.https://www.jianshu.com/p/f5409202a835

  4. centos7mini静默安装oracle11gr2

    [root@oracle ~]# cat /etc/hosts127.0.0.1 oracle.osp.cloud localhost localhost.localdomain localhost4 ...

  5. 2019.04.16 python基础50

    第五十一节  pycharm安装 https://www.jetbrains.com/pycharm/download/#section=windows 这是另一个叫jetbrains公司开发的 默认 ...

  6. JMeter-正则表达式(HTML)

    2019-04-26问题:需要取出交易成功,但是有黄色部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  7. Python多线程下存在_strptime的问题

    由于Python的datetime和time中的_strptime方法不支持多线程,运行时会报错:AttributeError: _strptime code: # -*- coding:utf-8 ...

  8. 微信小程序案例大全

    微信小程序demo:足球,赛事分析 小程序简易导航 小程序demo:办公审批 小程序Demo:电魔方 小程序demo:借阅伴侣 微信小程序demo:投票 微信小程序demo:健康生活 小程序demo: ...

  9. PAT (Basic Level) Practice (中文)1023 组个最小数

    1023 组个最小数 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8 ...

  10. C# 中List<T>与DataSet之间的转换

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...