在 Vue 3 中使用 Axios 发送 POST 请求

打印 上一主题 下一主题

主题 831|帖子 831|积分 2493

在 Vue 3 中使用 Axios 发送 POST 请求需要起首安装 Axios,然后在 Vue 组件或 Vuex 中使用它。以下是一个简单的安装和使用案例:
安装 Axios

你可以使用 npm 或 yarn 来安装 Axios:
  1.         npm install axios  
  2.         # 或者  
  3.         yarn add axios
复制代码
使用 Axios 发送 POST 请求


  • 在 Vue 组件中使用 Axios
起首,在你的 Vue 组件中导入 Axios:
  1.         <template>  
  2.           <div>  
  3.             <button @click="sendPostRequest">发送 POST 请求</button>  
  4.           </div>  
  5.         </template>  
  6.           
  7.         <script>  
  8.         import axios from 'axios';  
  9.           
  10.         export default {  
  11.           methods: {  
  12.             async sendPostRequest() {  
  13.               try {  
  14.                 const response = await axios.post('https://example.com/api/endpoint', {  
  15.                   key1: 'value1',  
  16.                   key2: 'value2'  
  17.                 });  
  18.                 console.log(response.data);  
  19.               } catch (error) {  
  20.                 console.error('Error sending POST request:', error);  
  21.               }  
  22.             }  
  23.           }  
  24.         };  
  25.         </script>
复制代码
在上面的例子中,当点击按钮时,sendPostRequest 方法会被调用,它会向指定的 URL 发送一个 POST 请求,并携带一些数据。如果请求成功,它会打印响应数据;如果请求失败,它会打印错误信息。

  • 在 Vuex 中使用 Axios
如果你更倾向于在 Vuex 中处理 API 请求,你可以这样做:
起首,在你的 Vuex store 中导入 Axios:
  1.         import axios from 'axios';  
  2.           
  3.         export default new Vuex.Store({  
  4.           actions: {  
  5.             async fetchData({ commit }) {  
  6.               try {  
  7.                 const response = await axios.post('https://example.com/api/endpoint', {  
  8.                   key1: 'value1',  
  9.                   key2: 'value2'  
  10.                 });  
  11.                 commit('setData', response.data);  
  12.               } catch (error) {  
  13.                 console.error('Error fetching data:', error);  
  14.               }  
  15.             }  
  16.           },  
  17.           mutations: {  
  18.             setData(state, data) {  
  19.               state.data = data;  
  20.             }  
  21.           },  
  22.           state: {  
  23.             data: null  
  24.           }  
  25.         });
复制代码
然后,在你的 Vue 组件中调用这个 action:
  1.         <template>  
  2.           <div>  
  3.             <button @click="fetchData">获取数据</button>  
  4.           </div>  
  5.         </template>  
  6.           
  7.         <script>  
  8.         export default {  
  9.           methods: {  
  10.             fetchData() {  
  11.               this.$store.dispatch('fetchData');  
  12.             }  
  13.           },  
  14.           computed: {  
  15.             data() {  
  16.               return this.$store.state.data;  
  17.             }  
  18.           }  
  19.         };  
  20.         </script>
复制代码
在这个例子中,当点击按钮时,fetchData 方法会被调用,它会触发 Vuex 中的 fetchData action。这个 action 会发送 POST 请求并更新 Vuex store 中的数据。然后,你可以通过盘算属性来访问这些数据。

创建一个 Axios 实例并配置一些底子选项

  1.         const instance = axios.create({  
  2.           baseURL: 'https://some-domain.com/api/',  
  3.           timeout: 1000,  
  4.           headers: {'X-Custom-Header': 'foobar'}  
  5.         });  
  6.           
  7.         const onSubmit = async () => {  
  8.           try {  
  9.             const response = await instance.post('/customer_info', {  
  10.               inputValue // 注意判断inputValue是否已经是对象,如果是删除{}
  11.             });  
  12.             console.log(response.data);  
  13.           } catch (error) {  
  14.             if (error.response) {  
  15.               // 请求已发出,服务器也返回了状态码,但状态码不在 2xx 范围内  
  16.               console.error('Error sending POST request:', error.response.data);  
  17.               // 可以根据 error.response.data 中的错误信息向用户展示具体的提示  
  18.             } else if (error.request) {  
  19.               // 请求已发出,但没有收到任何回应  
  20.               console.error('The request was made but no response was received:', error.request);  
  21.             } else {  
  22.               // 在设置请求时触发了一个错误  
  23.               console.error('Error setting up the request:', error.message);  
  24.             }  
  25.           }  
  26.         };
复制代码
请注意以下几点:

  • baseURL 在 instance 创建时已经被设置了,所以在调用 instance.post 时,您只需要提供相对于 baseURL 的路径(比方 /customer_info),而不是完备的 URL。
  • 确保 inputValue 变量在 onSubmit 函数的作用域内是可访问的,并且包罗了您想要发送的数据。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表