我们有一个现有的Web应用程序,其API不基于REST。我们希望使用Strongloop在它前面放置一个REST API,然而,在文档中迷失并且不确定是否可以实现。
示例:
想要在Strongloop中配置一个类似于;
的端点本地主机:3000 / API /数据对象/订单起始日期= 01/01/2016&安培;结束日期= 31/01/2016
此终点上的GET应该来自我们现有的Web应用程序的请求,该URL应该是URL;
?本地主机:4000 / WH页= ObjectBuilder的&安培;名称=订单&安培;起始日期= 01/01/2016&安培;结束日期= 31/01/2016
即。从API请求中获取订单并插入远程URL以及其余参数。
我可以使用express.js对此进行编码,但是想知道在Strongloop中是否可以使用配置?
谢谢!
答案 0 :(得分:0)
我认为您可以使用built-in REST connector,即使您的旧API本身不是REST(尽管您不会将内置映射的所有好处都带到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。 ;)