MockjsはバンドパラメータのGET要求をどのようにブロックするか
5651 ワード
質問を出す
以前、VueプロジェクトでMockjsをどのように使用するかを書いたが、アナログインタフェースから返されたデータは、前後の分離を実現し、独立して開発された読書量が高いという.Mockjsは非常に人気があるようだ.実践の過程で,Mockjs自体がGETリクエストに対するサポートが友好的ではないことが分かった.例えば、
解決策
この問題を解決するのは簡単です.Mock.mockの方法を見てみましょう.
rurlはオプションです.ブロックする必要があるURLを表し、URL文字列またはURL正則であってもよい.たとえば//domain/list.json/、'/domian/list.json'です.
すなわちrurlパラメータは正則的に伝達できる.GETリクエストにとって最も簡単な方法は、すべてのurlに対して正則を使用することです.次のようになります.
この簡単で乱暴なやり方は極端な場合に問題があるかもしれませんが、一般的には十分です.urlが似ていて衝突する可能性がある場合は、厳格な正則を書いて置き換えればいいです.
例:
要求パラメータについて
ブロックを書くときに、urlやパラメータなどの情報を含むパラメータoptionsを渡す方法があります.
以前、VueプロジェクトでMockjsをどのように使用するかを書いたが、アナログインタフェースから返されたデータは、前後の分離を実現し、独立して開発された読書量が高いという.Mockjsは非常に人気があるようだ.実践の過程で,Mockjs自体がGETリクエストに対するサポートが友好的ではないことが分かった.例えば、
Mock.mock("/user/getUserInfo", "get", mockData)
を使用する場合、urlが/user/getUserInfo
に等しい要求のみをブロックし、/user/getUserInfo?id=12
に等しくないとブロックできないため、パラメータ付き要求、例えば/user/getUserInfo
をブロックする.解決策
この問題を解決するのは簡単です.Mock.mockの方法を見てみましょう.
Mock.mock( rurl, rtype, template )
のrurlの定義はrurlはオプションです.ブロックする必要があるURLを表し、URL文字列またはURL正則であってもよい.たとえば//domain/list.json/、'/domian/list.json'です.
すなわちrurlパラメータは正則的に伝達できる.GETリクエストにとって最も簡単な方法は、すべてのurlに対して正則を使用することです.次のようになります.
Mock.mock(RegExp(url + ".*"), "get", mockData);
この簡単で乱暴なやり方は極端な場合に問題があるかもしれませんが、一般的には十分です.urlが似ていて衝突する可能性がある場合は、厳格な正則を書いて置き換えればいいです.
例:
import ApiPath from "@/api/ApiPath"
const Mock = require("mockjs")
let mockUserInfo = {
"code": 0,
"data": {
"fullName": "@CNAME", //
"userId": 1000234234001,
}
};
Mock.mock(RegExp(ApiPath.user.getUserInfo + ".*"), "get", (options) =>{
// , ,
console.debug(ApiPath.user.getUserInfo, options);
return Mock.mock(mockUserInfo);
});
要求パラメータについて
ブロックを書くときに、urlやパラメータなどの情報を含むパラメータoptionsを渡す方法があります.
options.url
で具体的なurlを手に入れることができ、options.body
で要求パラメータを手に入れることができます.ブロックした後、このoptionsをコンソールに印刷することは、デバッグに非常に役立ちます.また、要求パラメータを取得することで、異なる戻り値を実現することができる.Mock.mock(RegExp(ApiPath.user.getUserInfo + ".*"), "get", (options) =>{
// , ,
console.debug(ApiPath.user.getUserInfo, options);
return Mock.mock(mockUserInfo);
});