我想使用loopback作爲「中間人」來連接兩個不同的api(server1和server2)。當我將用戶的電子郵件傳遞給此「中間人」時,它將與服務器1進行覈對,如果該服務器返回true,則「中間人」將從服務器2中獲取所有數據,保存到服務器1中。如何創建回送外部CRUD?
有人可以指導我如何做到這一點?我試圖遵循環迴文檔,但我得不到我想要的東西,我錯過了什麼?
我想使用loopback作爲「中間人」來連接兩個不同的api(server1和server2)。當我將用戶的電子郵件傳遞給此「中間人」時,它將與服務器1進行覈對,如果該服務器返回true,則「中間人」將從服務器2中獲取所有數據,保存到服務器1中。如何創建回送外部CRUD?
有人可以指導我如何做到這一點?我試圖遵循環迴文檔,但我得不到我想要的東西,我錯過了什麼?
所以實際的實現並沒有真正與Loopback.js框架相關。這可以在任何Node.js代碼中實現。
而實際上上方的描述是正確的步驟來做到這一點使用簡單的HTTP請求發送到服務器1和2
例如使用request 模塊此代碼示出了中間人的僞代碼。
const request = require('request');
// 1. Call Server 1
request('http://server1.com/api/message', function (err, res, body) {
// 2. Check body message is true
if (body.message === true) {
// 3. Get data from Server 2
request('http://server2.com/api/get', function (err, res, body) {
// 4. Save data to Server 1
request({
url: 'http://server1.com/api/save',
method: "POST",
json: requestData },
function (err, res body) { /* process response here... */ });
});
}
});
假設你已經設置了呼叫您的外部API提供商按我的回答your related question 2個數據源 - 在這個例子中,你需要以下呼叫:
Server1的數據源:
checkEmail
// GET方法,返回true或falsesave
// POST方法,返回true或falseServer2上的數據源:
getDetails
// GET或POST方法,返回詳細聯繫方式的電子郵件地址您還需要有一個適當的方法的環回模式作爲你的切入點。例如,讓我們稱之爲聯繫人,使用稱爲store
的遠程方法,接收電子郵件參數。此代碼會做所有的工作:
Contact.store = function(email, cb) {
var server1 = Contact.app.dataSources.Server1;
var server2 = Contact.app.dataSources.Server2;
server1.checkEmail(email, function(validated) {
if(validated) {
server2.getDetails(email, function(details) {
if(details) {
server1.save(details, function(success) {
if(success) {
cb(null, details);
}
})
}
})
}
})
}
(你可以promisify上述所有的更清潔的代碼)
嗨conradj,我仍然這樣混淆,你有什麼樣的例子來告訴我嗎?或者你能指導我如何做到這一點? –
@永平根據您的需求給您特定的幫助會更容易。您是否能夠在您嘗試使用的外部API的問題中提供更多信息?此外,你可以發佈你迄今爲止所做的事情以及你有哪些錯誤或問題? – conradj
但我需要使用回送這個。你能指導我如何在環回中使用它嗎? –