2016-01-22 93 views
1

我們有一個現有的Web應用程序,它具有不基於REST的API。我們希望使用Strongloop將REST API放在它的前面,然而,迷失在文檔中並且不確定是否可以實現。Strongloop REST連接器 - 連接到非REST遠程資源

例如:

想在Strongloop中配置一個端點,它看起來像;

本地主機:3000/API /數據對象/訂單起始日期= 01/01/2016 &結束日期= 31/01/2016

就這樣結束了A點應該服務於我們現有的Web應用程序的請求? ,URL的位置在哪裏;

本地主機:4000/WH頁= ObjectBuilder的&名稱=訂單&的StartDate = 01/01/2016 &結束日期= 31/01/2016

即,從API請求採取訂單和插入遠程URL以及其餘參數。

我可以使用express.js編碼,但想知道這是否可以使用Strongloop中的配置?

謝謝!

+0

你*可以*用LoopBack做到這一點,但你最終自己做了很多工作。因爲你基本上必須重寫'find','findById','save','destroy'等方法來匹配你的端點。但是,REST連接器不僅需要連接到適當的「REST」API,還可以連接到任何基於URL的API。我會看看是否可以使用您提供的URL格式來處理一個示例。 – jakerella

回答

0

我想你也許可以使用built-in REST connector即使你的遺留API不是休息本身(雖然你沒有得到的所有好處內置映射findcreatedestroy,等等)。連接器只是將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。 ;)