而不是試圖做這個醜陋的「兩個HTTP」,angular-in-memory-web-api
提供了幾個選項。
從0.1.3開始,有配置屬性將所有未找到的集合調用轉發到常規XHR。
InMemoryWebApiModule.forRoot(MockData, {
passThruUnknownUrl: true
})
這將做的是將任何無法找到集合的請求轉發到真正的XHR上。因此,一個選擇就是逐漸從內存數據庫中刪除集合。
class MockData implements InMemoryDbService {
createDb() {
let cats = [];
let dogs = [];
return {
cats,
// dogs
};
}
}
一旦你從數據庫中刪除dogs
收集,現在正向所有的狗發送到真正的後端的內存會。
這只是一個集合級別的修復。但是如果你需要更細粒度的控制,你可以使用方法攔截器。
在你的MockData
類中,假設你想重寫get
方法,只需將它添加到MockData
類中,並帶有HttpMethodInterceptorArgs
參數。
class MockData implements InMemoryDbService {
get(args: HttpMethodInterceptorArgs) {
// do what you will here
}
}
的HttpMethodInterceptorArgs
的結構如下(只要你有,你可以用它做什麼的想法)
HttpMethodInterceptorArgs: {
requestInfo: {
req: Request (original request object)
base
collection
collectionName
headers
id
query
resourceUrl
}
passThruBackend: {
The Original XHRBackend (in most cases)
}
config: {
this is the configuration object you pass to the module.forRoot
}
db: {
this is the object from creatDb
}
}
作爲一個例子,這裏是它會是什麼樣子,如果你只是轉發所有獲取請求
get(args: HttpMethodInterceptorArgs) {
return args.passthroughBackend.createConnection(args.requstInfo.req).response
}
酷!我正在尋找。謝謝!! – okeydoky