服务器之家:专注于服务器技术及软件下载分享
分类导航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服务器之家 - 编程语言 - JavaScript - Vue中 axios delete请求参数操作

Vue中 axios delete请求参数操作

2021-08-31 16:39喂,小猴子 JavaScript

这篇文章主要介绍了Vue中 axios delete请求参数操作,具有很好的参考价值,希望对大家有所 帮助。一起跟随小编过来看看吧

vue中axios 的delete和post,put在传值上有点区别

post和put有三个参数,url,data和config,所以在使用这两个时,可以写成axios.post(api,{id:1}),axios.put(api,{id:1}),但是delete只有两个参数:url和config,data在config中,所以需要写成 axios.delete(api,{data:{id:1}})

如果是服务端将参数当作Java对象来封装接收则 参数格式为:

{data: param}

  1. var param={id:1,name:'zhangsan'}
  2. this.$axios.delete("/ehrReferralObjPro", {data: param}).then(function(response) {
  3. }

如果服务端将参数当做url 参数 接收,则格式为:{params: param},这样发送的url将变为http:www.XXX.com?a=…&b=…

  1. var param={id:1,name:'zhangsan'}
  2. this.$axios.delete("/ehrReferralObjPro", {params: param}).then(function(response) {
  3. }

axios 数组传值时,我传到后台的是两个字符串数组,但是将参数当成url参数接收时,如果是正常传值,将数组作为一个请求参数传值时,后台接口接收不到匹配的参数,百度之后使用JSON.stringify(),但是使用以后,后台多了一对双引号,最后把后台改成对象封装接收参数,使用的第一种。

补充知识:vue 项目中的this.$get,this.$post等$的用法

vue官网上有这么一句话

Vue中 axios delete请求参数操作

结合案例:

  1. // 基于axios 封装的http请求插件
  2. const axios = require('axios');
  3.  
  4. /**
  5. * 以下这种方式需要调用Vue.use方法 调用的时候调用 this.$fetch, this.$post, this.$axios, this.$put, this.$del 方法
  6. */
  7. function coverFormData (data) {
  8. return Object.keys(data).map(key => {
  9. let value = data[key];
  10. if (typeof value === 'object') {
  11. value = JSON.stringify(value);
  12. }
  13. return encodeURIComponent(key) + '=' + encodeURIComponent(value);
  14. })
  15. }
  16. const http = {
  17. install(Vue, Option) {
  18. axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
  19. if (Option) {
  20. // 超时设置
  21. axios.defaults.timeout = Option.timeout || 10000;
  22. // 默认请求地址设置
  23. axios.defaults.baseURL = Option.baseURL || "";
  24. // 头部设置
  25. if (Option.headers && typeof Option.headers === 'object') {
  26. for (let key in Option.headers) {
  27. if (!Option.headers.hasOwnProperty(key)) continue;
  28. axios.defaults.headers[key] = Option.headers[key];
  29. }
  30. }
  31. // 请求/响应拦截器
  32. Option.inRequest && axios.interceptors.request.use(Option.inRequest, error => {
  33. Promise.reject(error);
  34. });
  35. Option.inResponse && axios.interceptors.response.use(Option.inResponse, error => {
  36. Promise.reject(error);
  37. });
  38. }
  39. /**
  40. * @param {string} url
  41. * @param {object} params={} 参数可以根据需要自行处理
  42. */
  43. const fetch = (url, params = {}, config = {}) => {
  44. const str = coverFormData(params).join('&');
  45. return new Promise((resolve, reject) => {
  46. let address = url;
  47. if (str) {
  48. address += '?' + str;
  49. }
  50. axios.get(address, config).then(res => {
  51. resolve(res.data);
  52. }).catch(error => {
  53. reject(error);
  54. });
  55. });
  56. };
  57.  
  58. /**
  59. * @param {string} url
  60. * @param {object} data={} 参数可以根据需要自行处理
  61.  
  62. */
  63. const post = (url, data = {}, config = {}) => {
  64. let str = coverFormData(data).join('&');
  65. if (config.headers && config.headers['Content-Type'] && config.headers['Content-Type'].indexOf('application/json') > -1) {
  66. str = JSON.parse(JSON.stringify(data));
  67. }
  68. return new Promise((resolve, reject) => {
  69. axios.post(url, str, config).then(res => {
  70. resolve(res.data);
  71. }).catch(error => {
  72. reject(error);
  73. });
  74. });
  75. };
  76.  
  77. /**
  78. * @param {string} url
  79. * @param {object} data={} 参数可以根据需要自行处理
  80. */
  81. const put = (url, data = {}, config = {}) => {
  82. const str = coverFormData(data).join('&');
  83. return new Promise((resolve, reject) => {
  84. axios.put(url, str, config).then(res => {
  85. resolve(res.data);
  86. }).catch(error => {
  87. reject(error);
  88. });
  89. });
  90. };
  91.  
  92. /**
  93. * @param {string} url
  94. * @param {object} params={}
  95. */
  96.  
  97. const del = (url, config = {}) => {
  98. const str = coverFormData(config).join('&');
  99. return new Promise((resolve, reject) => {
  100. axios.delete(url, str).then(res => {
  101. resolve(res.data);
  102. }).catch(error => {
  103. reject(error);
  104. });
  105. });
  106. };
  107. const data = { axios, fetch, post, put, del };
  108. // 这个地方说明了为啥使用的时候是this.$fetch, this.$post, this.$axios, this.$put, this.$del 这几个方式
  109. Object.keys(data).map(item => Object.defineProperty(Vue.prototype, '$' + item, { value: data[item] }));
  110. }
  111. };
  112.  
  113. export default http;

然后在main.js中导入包使用:

Vue中 axios delete请求参数操作

  1. import http from './assets/js/http';
  2.  
  3. Vue.use(http, {
  4. timeout: 60000,
  5. inRequest (config) {
  6. config.headers['Authorization'] =
  7. sessionStorage.getItem('TokenType') +" "
  8. + sessionStorage.getItem('AccessToken');
  9. return config;
  10. },
  11. inResponse (response) {
  12. return response;
  13. }
  14. });

之后在子组件中就可以直接使用this.$post等了

比如:

  1. this.$post("你的url", {
  2. CityId: cityid,
  3. Type: 3
  4. })
  5. .then(res => {
  6. if (res.Success) {
  7. this.searchSecondary = res.Data;
  8. }
  9. })
  10. .catch(error => {
  11. console.log(error);
  12. });

以上这篇Vue中 axios delete请求参数操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

原文链接:https://blog.csdn.net/w_e_i_1201/article/details/86006816

延伸 · 阅读

精彩推荐