06dcfb0b by simon

1、修改请求方式 (请求头加入env和moduleCode)

2、新增配置
1 parent 64abdf01
...@@ -2,3 +2,11 @@ NODE_ENV = 'development' ...@@ -2,3 +2,11 @@ NODE_ENV = 'development'
2 VUE_APP_TITLE = 'development' 2 VUE_APP_TITLE = 'development'
3 VUE_APP_PUBLIC_PATH = './' 3 VUE_APP_PUBLIC_PATH = './'
4 VUE_APP_OUTPUT_DIR = 'dist' 4 VUE_APP_OUTPUT_DIR = 'dist'
5
6 VUE_APP_ENV = 'demo'
7 VUE_APP_MODULE_CODE = '6f9f27c42878499a965c94bc8f203b23'
8 VUE_APP_BASE_API = 'https://bizapi.kdao.xin'
9 VUE_APP_RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxi7pNPRSc+87WEJxYnlMOzoDHBgMTmkQyVSMdYRi4tqcnqTibTqEB6xbL5S2w8kjq5ItMKjNcrFvdlh/oj+Qb2LtrHE/O6EOGQf58qH3kZmIhZ32tejJ57c67cXhqbaswUU8WhN4LkhdINrNcpKvnWBd6v2nmEUrmgvi/aL6DIG+OgUyFys0l5BQOeGqzEEYXQgR9ppwDl/QadKpIBgm87qPnhzR++EPKzScgqgqT8D8uw2A96Mj02HXS1n74eCViW+M04UiQ0p0Rq9RMs5EtVJMo2CuArHaPsvsjkUTVdsSROoRTvBzq+T1WmCZJzDvITPZ0hbpD5pTeaXHm7qItQIDAQAB'
10 VUE_APP_AES_IV = 'c5014a8dc3a341ac'
11 VUE_APP_TOKEN_KEY = 'kd_template_token'
12 VUE_APP_IS_POST_ENC = true
......
...@@ -2,3 +2,12 @@ NODE_ENV = 'production' ...@@ -2,3 +2,12 @@ NODE_ENV = 'production'
2 VUE_APP_TITLE = 'production' 2 VUE_APP_TITLE = 'production'
3 VUE_APP_PUBLIC_PATH = './' 3 VUE_APP_PUBLIC_PATH = './'
4 VUE_APP_OUTPUT_DIR = 'dist' 4 VUE_APP_OUTPUT_DIR = 'dist'
5
6
7 VUE_APP_ENV = 'demo'
8 VUE_APP_MODULE_CODE = '6f9f27c42878499a965c94bc8f203b23'
9 VUE_APP_BASE_API = 'https://bizapi.kdao.xin'
10 VUE_APP_RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxi7pNPRSc+87WEJxYnlMOzoDHBgMTmkQyVSMdYRi4tqcnqTibTqEB6xbL5S2w8kjq5ItMKjNcrFvdlh/oj+Qb2LtrHE/O6EOGQf58qH3kZmIhZ32tejJ57c67cXhqbaswUU8WhN4LkhdINrNcpKvnWBd6v2nmEUrmgvi/aL6DIG+OgUyFys0l5BQOeGqzEEYXQgR9ppwDl/QadKpIBgm87qPnhzR++EPKzScgqgqT8D8uw2A96Mj02HXS1n74eCViW+M04UiQ0p0Rq9RMs5EtVJMo2CuArHaPsvsjkUTVdsSROoRTvBzq+T1WmCZJzDvITPZ0hbpD5pTeaXHm7qItQIDAQAB'
11 VUE_APP_AES_IV = 'c5014a8dc3a341ac'
12 VUE_APP_TOKEN_KEY = 'kd_template_token'
13 VUE_APP_IS_POST_ENC = true
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -2,3 +2,12 @@ NODE_ENV = 'production' ...@@ -2,3 +2,12 @@ NODE_ENV = 'production'
2 VUE_APP_TITLE = 'sandbox' 2 VUE_APP_TITLE = 'sandbox'
3 VUE_APP_PUBLIC_PATH = './' 3 VUE_APP_PUBLIC_PATH = './'
4 VUE_APP_OUTPUT_DIR = 'sandbox' 4 VUE_APP_OUTPUT_DIR = 'sandbox'
5
6
7 VUE_APP_ENV = 'demo'
8 VUE_APP_MODULE_CODE = '6f9f27c42878499a965c94bc8f203b23'
9 VUE_APP_BASE_API = 'https://bizapi.kdao.xin'
10 VUE_APP_RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxi7pNPRSc+87WEJxYnlMOzoDHBgMTmkQyVSMdYRi4tqcnqTibTqEB6xbL5S2w8kjq5ItMKjNcrFvdlh/oj+Qb2LtrHE/O6EOGQf58qH3kZmIhZ32tejJ57c67cXhqbaswUU8WhN4LkhdINrNcpKvnWBd6v2nmEUrmgvi/aL6DIG+OgUyFys0l5BQOeGqzEEYXQgR9ppwDl/QadKpIBgm87qPnhzR++EPKzScgqgqT8D8uw2A96Mj02HXS1n74eCViW+M04UiQ0p0Rq9RMs5EtVJMo2CuArHaPsvsjkUTVdsSROoRTvBzq+T1WmCZJzDvITPZ0hbpD5pTeaXHm7qItQIDAQAB'
11 VUE_APP_AES_IV = 'c5014a8dc3a341ac'
12 VUE_APP_TOKEN_KEY = 'kd_template_token'
13 VUE_APP_IS_POST_ENC = true
......
...@@ -7,7 +7,7 @@ npm install ...@@ -7,7 +7,7 @@ npm install
7 7
8 ### Compiles and hot-reloads for development 8 ### Compiles and hot-reloads for development
9 ``` 9 ```
10 npm run serve 10 npm run dev
11 ``` 11 ```
12 12
13 ### Compiles and minifies for production 13 ### Compiles and minifies for production
...@@ -25,5 +25,22 @@ npm run test ...@@ -25,5 +25,22 @@ npm run test
25 npm run lint 25 npm run lint
26 ``` 26 ```
27 27
28 ### Customize configuration 28
29 See [Configuration Reference](https://cli.vuejs.org/config/). 29 # 配置
30 ## 环境配置
31 配置说明:
32 本地环境: .env.development
33 沙箱环境: .env.sandbox
34 正式环境: .env.development
35
36 ## 配置项说明
37 ```bash
38 # 接口环境
39 VUE_APP_ENV = 'demo' # 请求头环境参数:demo/prod,即开发/生产。不填写默认连接prod。
40 VUE_APP_MODULE_CODE = '' # 请求头module code,由后端提供。
41 VUE_APP_BASE_API = '' # api请求域名
42 VUE_APP_RSA_PUBLIC_KEY = '' # 加密公钥
43 VUE_APP_AES_IV = '' # 加密偏移量
44 VUE_APP_TOKEN_KEY = 'kd_template_token' # 埋cookies时,token以该值为key
45 VUE_APP_IS_POST_ENC = true # 该值为true所有post接口请求加密;为false不加密,但可配置opt.enc=true自定义接口加密
46 ```
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -17,15 +17,16 @@ import { ...@@ -17,15 +17,16 @@ import {
17 17
18 import api from '@/api/api'; 18 import api from '@/api/api';
19 19
20
20 // axios的默认url 21 // axios的默认url
21 // axios.defaults.baseURL = "" 22 // axios.defaults.baseURL = ""
23 let base = process.env.VUE_APP_BASE_API;
24 const ENV = process.env.VUE_APP_ENV;
25 const MODULE_CODE = process.env.VUE_APP_MODULE_CODE;
26 const IS_POST_ENC = process.env.VUE_APP_IS_POST_ENC;
27 // 默认超时
28 axios.defaults.timeout = 5000;
22 29
23 // 服务器地址
24 // let base = process.env.VUE_APP_API_HOST + "/jxMallApi";
25 let base = "https://ow.go.qudone.com";
26 if (location.href.indexOf("//k.wxpai.cn") > 0) {
27 base = "https://api.k.wxpai.cn/bizproxy"
28 }
29 30
30 // 请求拦截器 31 // 请求拦截器
31 // axios.interceptors.request.use( 32 // axios.interceptors.request.use(
...@@ -98,29 +99,32 @@ axios.interceptors.response.use( ...@@ -98,29 +99,32 @@ axios.interceptors.response.use(
98 ); 99 );
99 100
100 101
101 //formDataHeaders设置
102 let formDataHeaders = {
103 headers: {
104 "Content-Type": "multipart/form-data"
105 }
106 }
107
108 /** 102 /**
109 * 封装get方法 103 * 分解参数&拦截请求
110 * @param {*} params
111 *
112 */ 104 */
113 export const httpGet = params => { 105 function analysisParams(params) {
114 let { 106 let {
115 url, 107 url,
116 data, 108 data,
117 mode, 109 mode,
118 opt = Object.assign({}, params.opt), 110 opt = Object.assign({}, params.opt),
119 sid = true 111 sid = true,
112 config,
113 method
120 } = params; 114 } = params;
115 if (IS_POST_ENC == 'true') {
116 if (method == 'post') {
117 data = makeEncrypt(data);
118 }
119 } else {
121 if (opt.enc) { 120 if (opt.enc) {
122 data = makeEncrypt(data); 121 data = makeEncrypt(data);
123 } 122 }
123 }
124
125 if (opt.dec) {
126 data = makerypt(data);
127 }
124 let reqUrl = `${base}${url}`; 128 let reqUrl = `${base}${url}`;
125 if (mode == "custom") { 129 if (mode == "custom") {
126 reqUrl = `${url}` 130 reqUrl = `${url}`
...@@ -128,7 +132,32 @@ export const httpGet = params => { ...@@ -128,7 +132,32 @@ export const httpGet = params => {
128 let headers = {} 132 let headers = {}
129 if (sid) { 133 if (sid) {
130 headers.sessionId = getToken(); 134 headers.sessionId = getToken();
135 headers['-kd-platform-module'] = MODULE_CODE
136 headers['-kd-platform-env'] = ENV
137 }
138 return {
139 reqUrl,
140 data,
141 headers,
142 opt,
143 method,
144 config
131 } 145 }
146 }
147
148 /**
149 * 封装get方法
150 * @param {*} params
151 */
152 export const httpGet = params => {
153 params.method = 'get';
154 let {
155 reqUrl,
156 data,
157 headers,
158 opt,
159 method
160 } = analysisParams(params);
132 return axios.get(reqUrl, { 161 return axios.get(reqUrl, {
133 params: data, 162 params: data,
134 headers, 163 headers,
...@@ -138,27 +167,18 @@ export const httpGet = params => { ...@@ -138,27 +167,18 @@ export const httpGet = params => {
138 167
139 /** 168 /**
140 * 封装post方法 169 * 封装post方法
170 * mode为custom时,忽略baseUrl
141 * @param {*} params 171 * @param {*} params
142 */ 172 */
143 export const httpPost = params => { 173 export const httpPost = params => {
174 params.method = 'post';
144 let { 175 let {
145 url, 176 reqUrl,
146 data, 177 data,
147 mode, 178 headers,
148 opt = Object.assign({}, params.opt), 179 opt,
149 sid = true 180 method
150 } = params; 181 } = analysisParams(params);
151 if (opt.enc) {
152 data = makeEncrypt(data);
153 }
154 let reqUrl = `${base}${url}`;
155 if (mode == "custom") {
156 reqUrl = `${url}`
157 }
158 let headers = {}
159 if (sid) {
160 headers.sessionId = getToken();
161 }
162 return axios.post(reqUrl, data, { 182 return axios.post(reqUrl, data, {
163 headers, 183 headers,
164 opt 184 opt
...@@ -186,7 +206,11 @@ export const formdata = params => { ...@@ -186,7 +206,11 @@ export const formdata = params => {
186 for (let key in data) { 206 for (let key in data) {
187 formData.append(key, data[key]); 207 formData.append(key, data[key]);
188 } 208 }
189 return axios.post(`${base}${url}`, formData, formDataHeaders).then(res => res.data.content); 209 return axios.post(`${base}${url}`, formData, {
210 headers: {
211 "Content-Type": "multipart/form-data"
212 }
213 }).then(res => res.data.content);
190 } 214 }
191 215
192 216
......
1 import Cookies from 'js-cookie' 1 import Cookies from 'js-cookie'
2 2
3 const TokenKey = 'temp-app-token' 3 const TokenKey = process.env.VUE_APP_TOKEN_KEY; // TokenKey 自行配置
4 4
5 export function getToken() { 5 export function getToken() {
6 return Cookies.get(TokenKey) 6 return Cookies.get(TokenKey)
......
...@@ -11,8 +11,8 @@ let rsa = new JsEncrypt(); ...@@ -11,8 +11,8 @@ let rsa = new JsEncrypt();
11 * iv 偏移量 11 * iv 偏移量
12 */ 12 */
13 export function makeEncrypt(param) { 13 export function makeEncrypt(param) {
14 let key = ""; 14 let key = process.env.VUE_APP_RSA_PUBLIC_KEY; // process.env.AES_KEY
15 let iv = "" 15 let iv = process.env.VUE_APP_AES_IV; // process.env.AES_IV
16 rsa.setPublicKey(key); 16 rsa.setPublicKey(key);
17 let chars = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".split(","); 17 let chars = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".split(",");
18 18
......