我想你也許可以使用built-in REST connector即使你的遺留API不是休息本身(雖然你沒有得到的所有好處內置映射find
,create
,destroy
,等等)。連接器只是將URL轉換爲模型方法。這就是說,我認爲你確實需要讓舊的API吐出JSON ......它是這樣做的嗎?如果沒有,那麼你基本上只需要寫一個完整的翻譯器。
這不是工作代碼,但可能會幫助您獲得部分途徑。
在你server/datasources.json
文件:
"old-service": {
"name": "old-service",
"connector": "rest",
"operations": [{
"template": {
"method": "GET",
"url": "http://localhost:4000/wh",
"headers": {
// whatever you might need to send...
},
"query": {
"Page": "ObjectBuilder",
"Name": "{name}",
"StartDate": "{start}",
"EndDate": "{end}"
},
"responsePath": "$.results.theObject" // be sure to custom ize this
},
"functions": {
"buildObject": ["name", "start", "end"]
}
}]
}
在你server/model-config.json
一定太貴DataObject
模型映射到這個數據源:
{
// ...
"DataObject": {
"public": true,
"dataSource": "old-service"
},
}
而在你的模型本身(common/models/DataObject.js
),你現在可以調用buildObject()
方法:
DataObject.buildObject('Order', '01/01/2016', '31/01/2016', function(err, result, response) {
if (err) { ... }
// otherwise look at the result or response...
});
現在你可以調用這個方法,你可以把它放到這個模型的remoteMethod甚至override the default find
method。
祝你好運,但在許多情況下,你只需自己編寫「轉換」代碼即可。可能更容易從頭開始重寫API。 ;)
你*可以*用LoopBack做到這一點,但你最終自己做了很多工作。因爲你基本上必須重寫'find','findById','save','destroy'等方法來匹配你的端點。但是,REST連接器不僅需要連接到適當的「REST」API,還可以連接到任何基於URL的API。我會看看是否可以使用您提供的URL格式來處理一個示例。 – jakerella