Inject axios into Vue import axios from 'axios'; Vue.prototype.$axios = axios; import axios from 'axios' axios.defaults.timeout = 5000; //Response time axios.defaults.headers.post['Content-Type'] = 'application/json; charset=UTF-8'; //Configure request header axios.defaults.withCredentials= true; //With cookie axios.defaults.baseURL = 'http://localhost:8080/'; //Configure interface address //POST parameter serialization (add request interceptor) axios.interceptors.request.use((config) => { //You can add serialization code here, depending on the backend. The SSM backend I use accepts Json objects. If serialization is required, you can use the qs component return config; },(error) =>{ console.log('wrong parameter passing') return Promise.reject(error); }); //Return status judgment (add response interceptor) axios.interceptors.response.use((res) => { //Do something with the response data if (!res.data.success) { return Promise.resolve(res); } return res; }, (error) => { console.log('network abnormality') return Promise.reject(error); }); //Return a Promise (send a post request) export function fetchPost(url, params) { return new Promise((resolve, reject) => { axios.post(url, params) .then(response => { resolve(response); }, err => { reject(err); }) .catch((error) => { reject(error) }) }) } Returns a Promise (sends a get request) export function fetchGet(url, param) { return new Promise((resolve, reject) => { axios.get(url, {params: param}) .then(response => { resolve(response) }, err => { reject(err) }) .catch((error) => { reject(error) }) }) } export default { fetchPost, fetchGet, } Simple test: loginPost: function() { let params = { 'password': '123', 'username': 'admin' } http.fetchPost('/login', params).then((data) => { console.log(data) }).catch(err => { console.log(err) }) }, hello: function() { http.fetchGet('/hello', "").then((data) => { console.log(data) }).catch(err => { console.log(err) }) }, Post request: Get request: Cross-domain problem, here is the configuration on the backend: Configure cross domain in SpringMVC.xml: <!-- Interface cross-domain configuration --> <mvc:cors> <!-- allowed-methods="*" --> <!-- means all requests are valid --> <mvc:mapping path="/**" allowed-origins="*" allowed-methods="POST, GET, OPTIONS, DELETE, PUT" allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With" allow-credentials="true"/> </mvc:cors><!-- Interface cross-domain configuration--> Interface configuration: Configure in Vue Create a vue.config.js: module.exports = { devServer: { proxy: { '/api': { target: 'http://127.0.0.1:8080', // A virtual server will be created locally, and then the requested data will be sent and received at the same time, so that there will be no cross-domain problem when the server and the server interact with each other. changeOrigin: true, ws: true, pathRewrite: { '^/api': '' // Replace the request address in target, that is to say, when you request the address http://api.jisuapi.com/XXXXX in the future, just write /api} } } } } The backend can also obtain cookies normally. Of course, pay attention to the following configuration, this is the reason for the cookie axios.defaults.withCredentials = true; Summarize This is the end of this article about how to simply encapsulate axios in vue. For more relevant vue encapsulation axios content, please search 123WORDPRESS.COM's previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: How to insert a value containing single quotes or backslashes in MySQL statements
>>: Tutorial on installing MYSQL8.X on Centos
1. Install and use Docer CE This article takes Ce...
yum quick install mysql Add yum repository rpm -U...
Table of contents Configuration parsing Service C...
The first method: Use Junge's one-click scrip...
Solution to the data asymmetry problem between My...
concept If the index contains all the data that m...
Table of contents 1. Required attributes 1. name ...
Table of contents Main issues solved 1. The data ...
Nowadays, tabs are widely used in web design, but...
1. Change the transparency to achieve the gradual...
Table of contents 1. Introduction 2. Configure My...
Table of contents 1. Specify different packaging ...
Table of contents 1. Introduction 2. Entry mode o...
In daily work, we sometimes run slow queries to r...
Table of contents 1.Nuxt server-side rendering ap...