.netCore WebApi传输参变化
2021-03-21 05:25
标签:指定 post 处理 strong webapi har control char ati .netCore 的 WebApi,一般以前的mvc5,继承自 ApiController ,则是WebApi,采用独有的管道处理模型,再Core中,一般是 继承自 ControllerBase,控制器类上标注 [ApiController] 1.前端代码 2.后端代码 .netCore WebApi传输参变化 标签:指定 post 处理 strong webapi har control char ati 原文地址:https://www.cnblogs.com/Qintai/p/11829535.html1 //NetCoreWebApi中,传输 application/json; 格式的,后端无需加[FormBody]也能拿到值
2 $.ajax({
3 type: "post",
4 url: "/api/WebApi/ww",
5 data: JSON.stringify( { a: 1, b: 2,c: 4,"yy":99,"bb":"匹配"} ), //如果没有序列化,后端获取不到,序列化了,WebApi不需要加 FormBody,能拿到值,contentType: "application/json;charset=utf-8"//不加上 默认不是表单的那种也不是json那种
6 contentType: "application/x-www-form-urlencoded",//这个类型无法指定
7 data: { a: 1, b: 2,c: 4,"yy":99,"bb":"匹配"},
8 })
[HttpPost]
[Route("ww")]
public string Po(KJ k, int yy, string bb)
{
//k null
//yy 0
//b null
}
[HttpPost]
[Route("E3")]
public string fdasfs([BindAttribute(include: "a,b")] [FromBody] KJ p, int r = 0)
{
//******************.Net Core Mvc WebApi的post的使用**************************/
//1.前端指定的application/json,传输json数据,不管有没有[FromBody]都可以拿到值
/*2.前端指定的application/x-www-form-urlencoded,传输json数据或者json对象,失败,
*明明设置了传输类型,但是却成了 application /problem+json; charset=utf-8,导致请求失败
3.如果传入的除了一个实体,还有其他参数,那就都绑定不上 都没有拿到值
前端是这样的:{user: {a: 1, b: 9}, r: 99} 就是不行的,
{a: 1, b: 9}可行的
必须整成一个实体
/* var json = { user: { a: 1, b: 9, }, r: 99 };
$.ajax({
url: "/api/mm/E3",
type: "post",
//contentType:"application/x-www-form-urlencoded",//写成这种,写了也白写,最终传输类型被覆盖
contentType:"application/json",
data:JSON.stringify(json)
}); */
?
/* 4.NetCore的 BindAttribute特性 在 contentType:"application/json 不起作用,不能绑定指定的属性,在
contentType:"application/x-www-form-urlencoded 表单中完全可以,过滤掉不需要的属性
FormData
a:1
b:9
*/
return "OK";
}