后台使用的是.net core webapi,其有两种,一种是fromform,一种是frombody
1、fromform可以接收一些简单类型的数据,比如string,int等等,写法如下
参数单一
post(url, params, callback) { return new Promise((resolve, reject) => { axios.post(url, qs.stringify(params)).then(res => { callback ? resolve(callback(res.data)) : resolve(res.data); }).catch(err => { reject(err); }) }) },
let params = { "userid": userid }; return await request.post(UserApiUrl + 'sys/restpwd', params);后
后台
[HttpPost] public IActionResult Remove([FromForm] string UserId) { if (string.IsNullOrWhiteSpace(UserId)) { UserId = string.Empty; } ResultInfo resultInfo = new ResultInfo(); int flag = _userService.Remove(UserId); if (flag > 0) { resultInfo.Success = true; resultInfo.Msg = "删除成功"; } else { resultInfo.Msg = "删除失败"; } return Content(JsonHelper.SerializeObject(resultInfo)); }
2、formbody,无法接收简单参数,一般以DTO类的方式传入
postbody(url, params, callback) { return new Promise((resolve, reject) => { axios({ url:url, method:'post', data:params, contentType: "application/json; charset=UTF-8" }).then(res => { callback ? resolve(callback(res)) : resolve(res); }).catch(err => { reject(err); }) }) }
此如调用方法需要修改,如果还是原来的方法,则会返回415错误
let params = {"RoleId":1,"RoleName":"bbb"}; return await request.postbody(UserApiUrl+'sys/test',params);
需要注意的是RoleId在后台是数字型,如果写成"RoleId":"1",后台无法接收到数据,切记
[HttpPost] public IActionResult Test([FromBody] RoleDtoModel roleDtoModel) { return Content(JsonHelper.SerializeObject(roleDtoModel)); }
总结:两种方式各有利弊吧,如果就一个简单参数,也没必要弄个类出来,也可以把参数类型写成object,但是总觉得这样不是太好,看实际应用中的选择。
另外HttpGet是不需要FromBody或者Fromfom这个标记的。