Vue axios请求params&data 详解

params是添加到url的请求字符串中的,一般用于get请求。
data是添加到请求体(body)中的, 一般用于post请求。

1.先来说说params.

vue前端:

saveGenerateCollectName(this.saveCollectNameCons).then(res => {
                        console.log('res.status:  ' + res.status)
                        this.status = res.status
                        this.message = res.message
                        if(this.status == 0){
                            this.$message.success(`成功`)
                        }else {
                            this.$message.info(`失败`)
                        }
                    }).catch(err => {
                        console.log('saveGenerateCollectName-this.message:  ' + this.message)
                        if(err.toString().indexOf('cancel') == -1){
                            this.$message.error(`服务器问题,删除失败,失败原因为:${err}`)
                            return false;
                        }
                    });
                    

axios js部分
index.js

export  const saveGenerateCollectName = query =>{
    return request({
        // url:'/list-lib/uploadFileResult.json',
        // method:'get',
        url:'/collectList/saveGenerateCollectName',
        method: 'post',
        //data: {collectList:query}  //data 用@RequestBody来接收
         params: {collectList:query}  //params用@RequestParams 来接收
    }).catch(error => {
        // console.log('error:---   ' + JSON.stringify(error));
        // alert(typeof error)
    });

};

request.js

import axios from 'axios';

const service = axios.create({
    // process.env.NODE_ENV === 'development' 来判断是否开发环境
    // easy-mock服务挂了,暂时不使用了
    // baseURL: 'https://www.easy-mock.com/mock/5e3633b162df5945932860ef/TEST1',
    baseURL:'http://localhost:8084/xt-demo',
    timeout: 50000,
    // headers:{'Content-Type':'application/x-www-form-urlencoded'}// 'multipart/form-data'   //  'application/x-www-form-urlencoded';
});

service.interceptors.request.use(
    config => {
        // console.log('config.method---:   ' + config.method);
        console.log('config.url---:   ' + config.url)
        console.log('config.data---:   ' + config.data);
        // console.log('config.params---:   ' + config.params);
        debugger
        return config;
    },
    error => {
        console.log(error);
        return Promise.reject();
    }
);

service.interceptors.response.use(
    response => {
        if (response.status === 200) {
            // console.log('response.data---:   ' + response.data.status)
            return response.data;
        } else {
            Promise.reject();
        }
    },
    error => {
        console.log(error);
        return Promise.reject();
    }
);

export default service;

后端代码

public Map saveGenerateCollectName(@RequestParam("collectList") String tempCollectList){
        Map result = new HashMap();
        String tempCollectList = map.get("collectList").toString();
        return result;
    }

}
2.在来说说data.

vue前端:

saveGenerateCollectName(this.saveCollectNameCons).then(res => {
                        console.log('res.status:  ' + res.status)
                        this.status = res.status
                        this.message = res.message
                        if(this.status == 0){
                            this.$message.success(`成功`)
                        }else {
                            this.$message.info(`失败`)
                        }
                    }).catch(err => {
                        console.log('saveGenerateCollectName-this.message:  ' + this.message)
                        if(err.toString().indexOf('cancel') == -1){
                            this.$message.error(`服务器问题,删除失败,失败原因为:${err}`)
                            return false;
                        }
                    });
                    

axios js部分
index.js

export  const saveGenerateCollectName = query =>{
    return request({
        // url:'/list-lib/uploadFileResult.json',
        // method:'get',
        url:'/collectList/saveGenerateCollectName',
        method: 'post',
        data: query  //data 用@RequestBody来接收
        // params: {collectList:query}  //params用@RequestParams 来接收
    }).catch(error => {
        // console.log('error:---   ' + JSON.stringify(error));
        // alert(typeof error)
    });

};

request.js

同上

后端代码

@RequestMapping(value = "saveGenerateCollectName",method = RequestMethod.POST)
    public Map saveGenerateCollectName(@RequestBody Map<String,Object> map ){
//        String tempCollectList = map.get("collectList").toString();
        Map result = new HashMap();
        String status = "0";
        String message = "成功新建收藏夹";
        CollectList collectList = new CollectList();
        Map collectListMap = map;//JSON.parseObject(map, Map.class);
        collectList.setCollectName(collectListMap.get("newCollectName").toString());
        String tempTime = collectListMap.get("newCollectNameDate").toString();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date dateTime = null;
        try {
            dateTime = simpleDateFormat.parse(tempTime);
        } catch (Exception e) {
            e.printStackTrace();
        }
        collectList.setGenerateDate(dateTime);
        collectList.setLastUpdateDate(dateTime);
        CollectList collectResult = this.collectListService.insert(collectList);
        if(collectResult == null ){
            status = "1";
            message="新建收藏夹失败";
        }
        result.put("status",status);
        result.put("message",message);

        return result;
    }

3.关于附件上传的特别说明

vue前端:

uploadFiles(file){
                debugger
                let formData = new FormData();  //此处有坑,附件上传必须用formData
                formData.set("file", file.file);  //后端是根据"file" 来进行取值(@RequestParam("file") 或者@RequestBody MultipartFile file)
                uploadFiles(formData).then(res => {
                    this.status = res.status
                    this.message = res.message
                    console.log('this.status:  ' + this.status)
                    // console.log('refs.length2:  ' + that.$refs.upload.$children[0].fileList.length)
                    // debugger
                    if (this.status == 0) {
                        // debugger
                        this.$message.success(`附件上传成功`)
                    } else {
                        this.$message.info(`附件上传失败,失败原因${this.message}`)
                    }
                }).catch(err => {
                    // debugger
                    console.log('uploadFiles-err:  ' + err)
                    if(err.toString().indexOf('cancel') == -1){
                        this.$message.error(`删除失败,失败原因为:${err}`)
                        return false;
                    }
                });

el-upload 部分

<el-upload class="upload-demo"
                               ref="upload"
                               action=""
                               :http-request = "uploadFiles"
                               :multiple="true"
                               :accept="acceptFileType"
                               :limit="1"
                               :on-exceed="handleExceed"
                               :before-upload="beforeUpload"
                               :on-preview="handlePreview"
                               :on-remove="handleRemove"
                               :file-list="fileList"
                               :auto-upload="false">
                        <el-button size="small" type="text">点击上传</el-button>
<!--                        <label>点击上传</label>-->
<!--                        <div slot="tip" class="el-upload_tip">只能上传.xls文件,且不超过1M</div>-->
                    </el-upload>

axios js部分
index.js

//附件上传
export const uploadFiles = query => {
    return request({
        // url: '/list-lib/uploadFileResult.json',
        // method: 'get',
        url: '/fileList/uploadFiles',
        method: 'post',
        data:query   // 附件上传只能用data 来传数据,后端用@RequestBody
       
    }).catch(error => {
        // console.log('error:---   ' + JSON.stringify(error));
        // alert(error)
    });
};

request.js

同上

后端代码

@RequestMapping(value = "uploadFiles",method = RequestMethod.POST)
//    @PostMapping("uploadFiles")
//    RequestParam 用来取axios 中params&data 的值,RequestBody 用来去axios中data 的值
//    public Map uploadFiles(@RequestParam("file") MultipartFile file ) {
    public Map uploadFiles(@RequestBody MultipartFile file ) {
        Map resultMap = new HashMap();
        String status="0";
        String message="附件上传成功";
        resultMap.put("status",status);
        resultMap.put("message",message);
        if (file.isEmpty()) {
            status = "1";
            message="上传文件不能为空";
            resultMap.put("status",status);
            resultMap.put("message",message);
            return resultMap;
        }else{
        //上传文件 相关逻辑
            String fileName = file.getOriginalFilename();
            File dest = new File(uploadPath+fileName);
            try {
                file.transferTo(dest);
                return resultMap;
            } catch (IOException e) {
                status="2";
                message="附件上传失败.";
                resultMap.put("status",status);
                resultMap.put("message",message);
                e.printStackTrace();
            }

            return resultMap;
        }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容