我想你也许可以使用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