在撰寫Vue專案時,通常都要透過後端call api拿資料來存在data裡,並且因為資料會一直變動,不可能寫死在前端~
當頁面一多,需要call的api變多時,api路徑有修改,就需要眾裡尋它千百度,一個一個做修正,
或者是有時在審視哪些api有無使用等等,要是能集中管理與檢視api路徑真是再好不過了對吧?
那麼做適當的api管理是菜鳥前端的一大課題,今天來記錄在Vue專案上使用axios的管理方式。
axios有提供幾個管理api用的方法,以下步驟:
用作統一管理api的進入點,在各檔案引入 api.js 後就可以用定義好的func呼叫整理好的 api 方法
import axios from 'axios';
//這是自定義創建的axios實例的默認值
const userRequest = axios.create(
{ baseURL: 'https://api/search/' }
)
export const apiUserLogin = data =>{
userRequest.post( '/signIn' , data );
}
//也可以定義完全部後,再一次性 export
const apiUserLogout = ( ) => {
userRequest.get( '/signOut' );
};
const apiUserLogin = data => {
userRequest.post( '/signIn' , data );
};
export { apiUserLogout, apiUserLogin };
將會在這個頁面用上的 api 從 api.js 裡 import 進來,再加上後續要呼叫的 api 參數,就大功告成,比起落落長的完整寫出api,這種集中管理的寫法能讓要呼叫的參數都清楚呈現,也很好尋找要修改的對應api。
import { apiUserLogout, apiUserLogin } from "api.js";
//post
apiUserLogin({
email: "milkcat@gmail.com",
password: "123456789"
})
.then( res => {
console.log( res );
})
.catch( err => {
console.log(err);
});
//get
apiUserLogout( )
.then( res => {
console.log( res.data );
})
.catch( err => {
console.log(err);
});
axios有提供設定預設值,如果大部分的基本的數值都一樣、變動不大,後續新增上比較方便。
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios在設定上有優先順序,分別是: 個別呼叫時設定>創建實例時設定的默認值>全局設定的默認值
雖然在新人檢核有被問到關於集中api管理的必須性,上司的觀點是,有可能個別的baseUrl需要修改或是這些api基本上不可能被修改等等,就看自己的專案性質如何再決定是否將api集中管理囉!
https://medium.com/i-am-mike/%E4%BD%BF%E7%94%A8axios%E6%99%82%E4%BD%A0%E7%9A%84api%E9%83%BD%E6%80%8E%E9%BA%BC%E7%AE%A1%E7%90%86-557d88365619
http://axios-js.com/zh-cn/docs/index.html#axios-url-config
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements/export
This website uses cookies.