Javaweb基础-axios

Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。

GET方法

get请求第一种写法

java 复制代码
//后端
@Slf4j
@RestController
@RequestMapping("/demo")
public class DemoController {

    @RequestMapping("/getTest")
    // 被@RequestParam标记的参数必传,并且参数名前后端一致
    public Map<String, Object> getTest(@RequestParam String param) {
        log.info("入参:{}", param);
        HashMap<String, Object> map = new HashMap<>(2);
        map.put("param", param);
        log.info("出参:{}", map);
        return map;
    }
}
//axios
export default {
  name: 'App',
  methods: {
    getTest: function () {
      this.$axios({
        method: "GET",        //方法
        url: "/demo/getTest", //访问路径
        params: {             //参数 把参数拼接到url后面=》/demo/getTest?param=hi
          param: "hi"        // 后端被@RequestParam标记的参数名为param
        }
      }).then(res => {        //返回参数
        console.log(res)
      }).catch(err => {       //异常
        alert(err)
      })
    }
  }
}

get请求第二种写法

java 复制代码
//后端
@Slf4j
@RestController
@RequestMapping("/demo")
public class DemoController {

    @RequestMapping("/getTest")
    // 被@RequestParam标记的参数必传,并且参数名前后端一致
    public Map<String, Object> getTest(@RequestParam String param) {
        log.info("入参:{}", param);
        HashMap<String, Object> map = new HashMap<>(2);
        map.put("param", param);
        log.info("出参:{}", map);
        return map;
    }
}
//axios
export default {
  name: 'App',
  methods: {
    getTest2: function () {
      this.$axios
          .get("/demo/getTest?param=hello")    //方法名("访问路径?参数名=参数值"),
          .then(res => {                       //返回数据
            console.log(res)
          })
          .catch(err => {                      //异常
            alert(err)
          })
    },
  }
}

get请求发送的请求不能使用被@RequestBody标记的对象接收。

POST方法

post请求第一种写法

java 复制代码
    //后端
    @RequestMapping(value = "/postTest", method = RequestMethod.POST)
    //被@RequestParam标记的参数必传,并且参数名前后端一致
    public Map<String, Object> postTest(@RequestParam String param) {
        log.info("入参:{}", param);
        HashMap<String, Object> map = new HashMap<>(2);
        map.put("param", param);
        log.info("出参:{}", map);
        return map;
    }
    //axios
export default {
  name: 'App',
  methods: {
    postTest: function () {
      this.$axios({
        method: "POST",            //方法
        url: "/demo/postTest",     //路径
        params: {                  //params中的参数被拼接到url后面=》/demo/getTest?param=hi
          param: "hi"              //post请求中后端使用@RequestParam接参数,使用params
        }
      }).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
  }
}  
// axios等价于
export default {
  name: 'App',
  methods: {
    postTest: function () {
        this.$axios.post("/demo/postTest?param=hi") 
          .then(res => {
            console.log(res)
          }).catch(err => {
        alert(err)
      }) 
    },
  }
} 

get请求发送的请求时能使用被@RequestBody标记的对象接收。

java 复制代码
//后端
    @RequestMapping(value = "/postTest2", method = RequestMethod.POST)
    public Map<String, Object> postTest2(@RequestBody Map param) {
        log.info("入参:{}", param);
        HashMap<String, Object> map = new HashMap<>(2);
        map.put("param", param);
        log.info("出参:{}", map);
        return map;
    }
//axios
export default {
  name: 'App',
  methods: {
    postTest: function () {
      this.$axios({
        method: "POST",            //方法
        url: "/demo/postTest2",     //路径
        data: {                  //data中的参数被放置在请求体当中,使用@RequestBody标记的对象接收
          param: "hi"       
        }
      }).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
  }
}  

其他方法

delete(url: string);

javascript 复制代码
export default {
  name: 'App',
  methods: {
  //第一种
    deleteTest: function () {
      this.$axios({
        method: "DELETE",
        url: "/demo/deleteTest",
        params: {
          param: "hi"    //同样使用params
        }
      }).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
    //第二种
    deleteTest1: function () {
      this.$axios.delete("/demo/deleteTest?param=hi").then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
  }
}

head(url: string);

javascript 复制代码
export default {
  name: 'App',
  methods: {
    headTest: function () {
      this.$axios({
        method: "HEAD",
        url: "/demo/headTest",
        params: {
          param: "hi"   //同样使用params
        }
      }).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
    headTest1: function () {
      this.$axios.head("/demo/headTest?param=hi").then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
  }
}

options(url: string);

javascript 复制代码
export default {
  name: 'App',
  methods: {
    optionsTest: function () {
      this.$axios({
        method: "OPTIONS",
        url: "/demo/optionsTest",
        params: {
          param: "hi"   //同样使用params
        }
      }).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
    optionsTest1: function () {
      this.$axios.options("/demo/optionsTest?param=hi").then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
  }
}

put(url: string, data?: any);

javascript 复制代码
export default {
  name: 'App',
  methods: {
    putTest: function () {
      this.$axios({
        method: "PUT",
        url: "/demo/putTest",
        data: {
          param: "hello"    //使用data和params都可以
        }                    //data放置在请求体,params拼接在请求路径
      }).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
    putTest1: function () {
      this.$axios.put("/demo/putTest", {param: "hello"}).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
  }
}

patch(url: string, data?: any);

javascript 复制代码
export default {
  name: 'App',
  methods: {
    patchTest: function () {
      this.$axios({
        method: "PATCH",
        url: "/demo/patchTest",
        data: {
          param: "hello"     //使用data和params都可以
        }                    //data放置在请求体,params拼接在请求路径
      }).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
    patchTest1: function () {
      this.$axios.patch("/demo/patchTest", {param: "hello"},).then(res => {
        console.log(res)
      }).catch(err => {
        alert(err)
      })
    },
  }
}
相关推荐
肖志-AI全栈3 小时前
从零讲透 Ajax:XHR、Fetch、JSON 序列化到异步编程全链路
前端·ajax·json
katiua4 小时前
Vue-i18n TypeScript 补全提示
vue.js
Fuzio4 小时前
用 Spring Boot + Vue + Fuzio 构建现代 Java 桌面应用
vue.js·spring boot
kisshyshy4 小时前
从0到1彻底理解流式输出:先读懂Vue的“乐高积木”,再拧开LLM的“数据水龙头”
javascript·vue.js·人工智能
饮茶三千4 小时前
电子保函模板编辑器实战二:HTML→FTL 编译转换的设计与实现
前端·vue.js·设计模式
英勇无比的消炎药4 小时前
表单筛选利器:TinyVue BaseSelect 基础选择器实战
vue.js
先吃饱再说5 小时前
从零理解 Vue 3:组件化、数据绑定与响应式完全指南
vue.js·前端框架
gis开发之家6 小时前
《Vue3 从入门到大神29篇》单元测试与 E2E 测试 —— 保障 Vue3 项目的质量
前端·javascript·vue.js·单元测试·前端框架·vue3
forever_world7 小时前
# 💧 从前端视角,彻底搞懂 AI 流式输出 —— 从"接根水管"到 Vue 3 实战
前端·vue.js
QQ_21696290967 小时前
【项目编号:project05966】SpringBoot/Vue 电影推荐系统:用户端推荐、电影资讯与后台数据管理全流程
vue.js·spring boot·后端