Strongloop REST连接器 - 连接到非REST远程资源

时间:2016-01-22 15:13:34

标签: rest loopbackjs strongloop

我们有一个现有的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中是否可以使用配置?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您可以使用built-in REST connector,即使您的旧API本身不是REST(尽管您不会将内置映射的所有好处都带到find },createdestroy等)。连接器只是将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。 ;)