nuxt+axios 포장 후 요청 주 소 를 동적 으로 수정 하 는 방법
이것 도 좋 습 니 다.한 프로젝트 가 몇 개의 서로 다른 서버 에 배치 되 어야 할 때 매번 수정 한 후에 다시 포장 해 야 한 다 는 것 은 말 할 필요 가 없습니다.기능 이 변 하지 않 을 때 요청 주 소 를 수정 하 는 것 만으로 도 많은 시간 을 절약 할 수 있다.
1.시작
동적 수정 이 필요 한 설정 을 json 파일 에 쓰 십시오.이 프로필 은 static 디 렉 터 리 에 놓 을 수 있 습 니 다:
정적 파일 디 렉 터 리:정적 파일 디 렉 터 리 static 는 정적 파일 을 저장 하 는 데 사 용 됩 니 다.이 파일 은 Nuxt.js 에서 Webpack 을 호출 하여 컴 파일 처 리 를 하지 않 습 니 다.서버 가 시 작 될 때 이 디 렉 터 리 의 파일 은 응용 루트/아래 에 매 핑 됩 니 다.
2.실현
static 에서 baseConfig.json 파일 을 새로 만 들 고 노출 할 설정 을 적어 서 코드 를 먼저 올 립 니 다.
{
"video_dir": "video/",
"base_host": "http://xxxxx"
"request_prefix":'/api/'
}
필요 한 확장 프로필(쓰 고 싶 은 대로 쓰 고 즐 거우 면 됩 니 다~),예 를 들 어 사용 하지 않 는 환경(개발,생산)에 따라 전환 할 수 있 습 니 다.plugis 폴 더 아래 에 baseConfig.js 파일 을 새로 만 듭 니 다:
import Vue from 'vue';
import axios from 'axios';
const protocolTmp = window.location.protocol; // URL
const { host } = window.location; // host
<!-- -->
async function getServerConfig() {
return new Promise(async (resolve, reject) => {
await axios.get(`${protocolTmp}//${host}/baseConfig.json`).then((result) => {
const { base_host,video_dir ,request_prefix} = result.data;
// Vue ,
Vue.prototype.$base_host = base_host;
Vue.prototype.$request_prefix = request_prefix;
Vue.prototype.$video_dir = video_dir;
resolve();
}).catch((error) => {
console.log('error', error);
reject();
});
});
}
getServerConfig();
프로젝트 프로필 nuxt.config.js 에 도입:
plugins: [
...
'~/plugins/pathConfig'
],
마지막 으로 axios 에 사용 설정,완료.axios.js :
import Qs from "qs"
import Vue from 'vue';
export default function (e) {
// e.$axios.defaults.baseURL = 'http://xxxxxxx/api/'
// e.$axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
e.$axios.defaults.baseURL = Vue.prototype.$base_host + Vue.prototype.$request_prefix
// request interceptor
e.$axios.interceptors.request.use(
config => {
// do something before request is sent
if (config.method == 'post') {
config.data = Qs.stringify(config.data)
}
return config
},
error => {
// do something with request error
return Promise.reject(error)
}
)
// response interceptor
e.$axios.interceptors.response.use(
/**
* Determine the request status by custom code
* Here is just an example
* You can also judge the status by HTTP Status Code
*/
response => {
const res = response.data
if (response.status === 200 && res.code == 1000) {
return res
} else {
// redirect('/404')
// if the custom code is not 200, it is judged as an error.
}
return Promise.reject({ code: res.code, msg: res.msg || 'Error' })
},
error => {
console.log('err' + error) // for debug
return Promise.reject(error)
}
)
e.$axios.onError(error => {
const code = parseInt(error.response && error.response.status)
if (code === 400) {
// redirect('/400')
console.log('$axios.onError :', error)
}
})
}
3.마지막이 글 은 nuxt+axios 가 포장 을 실현 한 후 요청 주 소 를 동적 으로 수정 하 는 방법 에 관 한 글 을 소개 합 니 다.더 많은 관련 nuxt+axios 포장 후 동적 으로 요청 주소 내용 을 수정 하 는 것 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【비공식】Notion을 CMS로 해 기사 일람을 취득해 보았다 【하지만 편리】최근에는 업무 위탁으로 디자인 회사에서 배우면서 일전을 벌 수 있는 생활을 하고 있습니다. 또 이 후 axios를 넣을지 묻는다고 생각하므로 잊지 않고 넣어 봅시다. 이번에는 create-nuxt-app라는 페이지를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.