zoukankan      html  css  js  c++  java
  • 【VUE3.0体验】关于axios提交方式

    后台使用的是.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这个标记的。

    ===============================================================================

    typescript封装方法

    import axios,{AxiosRequestConfig} from 'axios';
    
    axios.interceptors.request.use((config:AxiosRequestConfig) => {
        config.headers={
            "Authorization":"Bearer " + sessionStorage.getItem("token")
        } ;
        return config;
    });
    
    const request = {
        get(url:string, params:any, callback?:any) {
            return new Promise((resolve, reject) => {
                axios.get(url, { params: params }).then(res => {
                    callback ? resolve(callback(res.data)) : resolve(res.data);
                }).catch(err => { reject(err); })
            })
        },
    
        post(url:string, params:any, callback?:any) {
            return new Promise((resolve, reject) => {
                axios.post(url,params,{
                    headers:{
                        'Content-Type':'application/json; charset=UTF-8'
                    }
                }                
                ).then(res => {
                    callback ? resolve(callback(res)) : resolve(res.data);
                }).catch(err => { reject(err); })
            })
        }
    };
    
    export default request
    

      

  • 相关阅读:
    CIFAR10-网络训练技术
    论文-Deep Residual Learning for Image Recognition
    Origin-作图相关
    OnCtlColor
    查看电脑MAC地址
    改变静态文本框和PictureControl的背景颜色
    MFC在对话框中的Picture contrl控件中添加icon图标,并改变icon图标的背景色与对话框背景色一致
    char型数组学习
    条件编译
    ASCII码
  • 原文地址:https://www.cnblogs.com/youyuan1980/p/15476036.html
Copyright © 2011-2022 走看看