axios を介してインターフェイスをリクエストするのは非常に簡単です。 axios リクエストがカプセル化されている場合、API は 1 か所のみでメソッドとして設定でき、使用時にこのメソッドを直接呼び出すことができます。それなら、あまり苦労する必要はありません。
ただし、各インターフェースを長々とした axios リクエスト メソッドとして定義する必要はありません。シンプルにしたいので、シンプルな設定を 1 か所で完了するようにしてください。
例えば、グローバルサービスの設定として、srcのservices配下にglobal.jsを定義しました。このサービスのメソッドの構成として。
例:
name フィールドは後で呼び出されるメソッドの名前として使用されますが、これは単なる単純なオブジェクトです。これをメソッドに変換します。
import axios from "axios"; const withAxios = apiConfig => { const serviceMap = {}; apiConfig.map(({ name, url, method }) => { serviceMap[name] = async function(data = {}) { let key = "params"; if (method === "post" || method === "put") { key = "data"; } return axios({ method, url: "/api" + url, [key]: data }); }; }); return serviceMap; }; export default withAxios;
このメソッドの機能は、API 設定ファイルをメソッドを含むオブジェクトに変換することです。
import withAxios from "../utils/withAxios"; const apiConfig = [ { name: "userLogin", url: "/login", method: "get" }, { name: "getUserInfo", url: "/login/user", method: "get" }, { name: "getDeptList", url: "/login/department", method: "get" } ]; export default withAxios(apiConfig);
を使用して、パッケージ化されたオブジェクトを直接エクスポートします。
vuex で API を呼び出したい場合は、まずエクスポートしたオブジェクトをインポートします
import GlobalService from "@/services/global";
アクション内でインターフェイスを呼び出します:
const { data } = await GlobalService.userLogin(payload);
以上です。その後、インターフェイス呼び出しを完了するために必要な設定と呼び出しの 2 つの手順だけが必要となり、インターフェイスのセマンティクスも明確になります。
utils の withAxios で axios の共通設定を行うことができます。
たとえば、認証は各リクエスト ヘッダーに自動的に含まれます:
axios.defaults.headers.common["Authorization"] = getCookie("jwt") || "";// 注意:此处只会在web应用初始化时配置,在登录成功后需重新配置Authorization。
たとえば、インターセプタを使用して返されたオブジェクトを均一に処理する:
axios.interceptors.response.use(response => { const { data } = response; if (data.status === -2) { Vue.prototype.$Message.error(`无效的登录信息或登录已失效,请重新登录`); delCookie("jwt"); router.push({ path: "/login" }); } if (data.status === -1) { Vue.prototype.$Message.error(`发生错误[${data.message}]`); } return response; });
関連する推奨事項:
以上がVueとaxiosのインターフェース管理を統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。