웹pack+vue-cil에서proxyTable 설정 인터페이스 주소 프록시 작업
3950 단어 webpackvue-cilproxyTable프로비저닝대리
dev: {
//
assetsSubDirectory: 'static',
//
assetsPublicPath: '/',
// , API
// 'localhost:8080/api/xxx' 'www.example.com/api/xxx'
// :https://vuejs-templates.github.io/webpack/proxy.html
proxyTable: {
'/api': {
target: 'http://xxxxxx.com', //
// secure: false, // https ,
changeOrigin: true, // ,
pathRewrite: {
'^/api': ''
}
}
},
// http://localhost:8080
host: 'localhost', // can be overwritten by process.env.HOST
인터페이스 주소는 원래/save/index였지만 프록시 주소와 일치하기 위해 앞에/api를 추가했습니다. 따라서 인터페이스 주소는 이렇게 쓰면/api/save/index가 적용됩니다.주의:'/api'는 일치하는 항목입니다. target은 요청된 주소입니다. aax의 URL에 접두사'/api'를 추가했습니다. 원래 인터페이스에는 이 접두사가 없기 때문에pathRewrite를 통해 주소를 다시 쓰고 접두사'/api'를'/'로 바꾸어야 합니다.만약 그 자체의 인터페이스 주소에'/api'라는 일반적인 접두사가 있다면, pathRewrite를 삭제할 수 있습니다.
보충 지식: 웹팩 -proxyTable의 설정이 개발 환경과 생산 환경에서의 원리에 대한 분석
앞말
우선,proxyTable은 로컬 개발 환경에서 인터페이스를 디버깅하는 데 사용되며, 로컬 크로스 필드의 문제를 해결하기 위한 것입니다. 로컬 주소는localhost:xxx/xxx이기 때문입니다.
온라인 생산 환경은 소용없어!!!
만약에 우리가 vue-cli 명령행 도구로 생성된 웹pack 프로젝트 템플릿을 사용한다면 config 폴더 아래에서 index를 쉽게 찾을 수 있습니다.js 파일.
로컬 구성 방법
만약 내가 요청하고자 하는 주소가
'http://xxx.com/scada/json/aa.tpl'
우리는 인덱스에 있다.js 파일에서 다음과 같은 코드를 찾았습니다. 저는 쓰기 방법을 추천했습니다. 뒤에 왜
그러면 제가 요청한 코드가 이렇습니다.
axios.get('/scada/json/aa.tpl').then((res) => {
//........
})
그 원리를 살짝 설명해 보세요. 요청을 할 때proxy가 작용하고 인터페이스'/scada'앞에'를'http://xxx.com:123', 되다http://xxx.com:123/scada/json/aa.tpl'우리가 설정한 pathRewrite 필드에'/scada'를'/scada'로 써야 하기 때문에 요청 인터페이스는 'http://xxx.com:123/scada/json/aa.tpl'계속 아래를 내려다보니 마른 물건이 아직 뒤에 있다
몇 가지 다른 작법을 가정하다
가설 1
만약 proxyTable 설정이 이렇다면
proxyTable: {
'/scada': {
target: 'http://xxx.com:123',
changeOrigin: true,
pathRewrite: {
'^/scada': '/'
}
}
그러면 우리의 요청 코드는 반드시 이렇게 써야 한다
axios.get('/scada/scada/json/aa.tpl').then((res) => {
//........
//
})
가설2만약 proxyTable 설정이 이렇다면, 다시 이름을 짓는 것이다
proxyTable: {
'/api': {
target: 'http://xxx.com:123',
changeOrigin: true,
pathRewrite: {
'^/api': '/'
}
}
그러면 우리의 요청 코드는 반드시 이렇게 써야 한다
axios.get('/api/scada/json/aa.tpl').then((res) => {
//........
// ,
})
다시 아래를 내려다보고, 내가 추천한 작법의 진정한 우세를 보다포장 온라인 문제
여기는 코드가 연결된 후와 인터페이스가 동원된 상황에서만 말하고 동원되지 않으면 전역이 존재한다. 여기는 이런 상황을 고려하지 않는다
만약 우리가 포장된 코드도 배치한다면http://xxx.com:123에
출시 후의 코드는 생산 환경이며,proxy가 없습니다
그러면 그는 어떻게 요청을 해석했습니까?예를 들면 아래의 이 요청.
axios.get('/scada/json/aa.tpl').then((res) => {//........
})
'/'은 루트 디렉터리의 뜻을 나타내기 때문에hostname +port + 요청한 주소, 즉 'http://xxx.com:123/scada/json/aa.tpl', 아무 문제 없어요. 인터페이스에서 요청할 수 있을 거예요.
그러면 만약에 위에서 제가 말한 가설 1 또는 가설 2의 작법을 따르면?
'그렇죠?'http://xxx.com:123/scada/scada/json/aa.tpl'와'http://xxx.com:123/api/scada/scada/json/aa.tpl'
그래서 가설 1과 가설 2는 포장하기 전에 요청 주소를 수정해야만 포장할 수 있어 불필요한 번거로움을 증가시켰다
이상의 웹pack+vue-cil에서proxyTable 설정 인터페이스 주소 프록시 조작은 여러분에게 공유된 모든 내용입니다. 참고해 주시고 저희를 많이 사랑해 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qiita API v2를 Ajax에서 사용하기위한 webpack 설정 (로컬 개발 환경 전용)에서는 Qiita의 기사 목록, 사용자 세부 정보, 기사를 '좋아요'한 사람 목록 및 재고가 있는 사람 목록을 검색할 수 있습니다. Qiita 화면에서 기사를 재고한 사람을 볼 수 없기 때문에 API를 통해 기사를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.