# Vue API Request設計 ###### tags: `Vue-cli`、`Vue2` ### 1.src>api>request.js #### 透過axios建立基礎連線,並設定timeout時間;下方interceptors為攔劫器 ```javascript= const service = axios.create({ baseURL: process.env.BASE_API, timeout: 60000 }) service.interceptors.request.use( config => { //資料送出前,可針對每個送出做最後處理 return config }, error => { Promise.reject(error) } ) service.interceptors.response.use( response => { //回傳結果 }, error=>{ //錯誤處理 } ) export default service ``` ### 2.src>api>index.js #### 建立基本傳輸格式,並在此設定header ```javascript= const request = ({ name = "", url = "", options = {}, otherOption = {}, method = "post" }) => { const baseRequest = { url: url + urlParam, method, headers: { "Content-Type": "application/json", "If-Modified-Since": "0" } } return new Promise(resolve => { axios( Object.assign(baseRequest, { [key]: options }) ) .then(response => { //回傳到前台統一格式 resolve({ status: !response.errorCode, errorCode: response.errorCode, data: response.data }) }) .catch(error => { resolve({ status: false, error }) }) }) } const requestFactory = requestConfig => options => { return request({ options, ...requestConfig }) } export default requestFactory ``` ### 3.API範例 ```javascript= export const apiExample = requestFactory({ name: "exampleName", url: `apiUrl`, method: "post" }) ```