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)
      })
    },
  }
}
相关推荐
岁月宁静3 小时前
驾驭 AI 这匹野马:深入解析智能体 Harness 工程
vue.js·python
qq_2518364577 小时前
基于nodejs express +vue 天天商城系统设计与实现 (源码 文档)
前端·vue.js·express
前端毕业班9 小时前
uni-app 小程序样式隔离实践指南和原理分析
前端·javascript·vue.js
仿生狮子9 小时前
🎼 从文本到交互界面——GenUI 的中庸之道
前端·vue.js·markdown
用户8417948145611 小时前
vxe-gantt 甘特图在 Nuxt 中的集成与使用
vue.js
喵了几个咪11 小时前
AI重构软件开发范式:框架与脚手架为何仍是生产级开发的刚需?
vue.js·人工智能·react.js·重构·golang·ai编程
lpd_lt14 小时前
服务端类vue等页面AI测试方向
前端·vue.js·人工智能
橘子味的冰淇淋~14 小时前
优化前端性能之从“全局引入”改为“按需引入”
前端·javascript·vue.js
Vennn14 小时前
Android自动化:使用 Web 方式实现某音未读消息检查与采集
前端·javascript·vue.js
皮皮大人15 小时前
Vue 3 响应式内核完全解密:reactive & effect 与 Vue 2 Watcher 史诗对决
前端·vue.js