我目前正在尝试实现 BFF(前端架构的后端)。
使用request-promise
库我可以成功命中其他微服务,但无法将结果作为 BFF 微服务的响应返回。
每次它返回这个结果Promise { pending }
挂起状态时,有人可以帮我解决这个问题吗?
我的主要问题是知道如何从我们正在命中的另一个微服务将数据接收到 BFF 微服务中,并从正在命中另一个微服务的微服务返回结果。
或者如果有人可以帮助我知道如何从.then
任何承诺内部访问结果?
流程是这样的:
client(ios/android)===(sends request)==>BFF Microservice==>BP microservice
(BFF 微服务处理请求并根据从其他微服务收到的结果返回响应)
调用另一个微服务的微服务代码:
import yagmodel from '../../lib/models/yag-model'
import {errorsList} from '../../lib/errors/errorsList'
import request from 'request-promise'
import config from 'config'
//template below to call the REST APIs of other microservices.
export async function getAllBP (req,res) {
let yagresponse// this varaible is defined to get data from inside(rs.then )
const username= req.swagger.params.username.value
const authheader= req.swagger.params.Authorization.value
console.log("Authorization:"+authheader)
let rs= await yagmodel.bp(username,authheader)
console.log(rs)
rs.then((response)=>{
// console.log(response.body)
yagresponse=response.body
//console.log(rsp)
}).catch((err)=>{
console.log(err)
console.log('errorstatuscode:'+err.statusCode)
})
res.status(200).send(yagresponse)
}
yag-model.js
代码:
import {errorsList} from '../../lib/errors/errorsList'
import request from 'request-promise'
module.exports.bp = async function getBP(username,authheader){
const options={
uri: `http://localhost:4000/Health/BP/`+username,
json: true,
resolveWithFullResponse: true,
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Accept': 'application/json; charset=utf-8',
'Authorization':authheader
},
method: 'GET'
}
return request(options).then ((response)=>{
return response.body
}).catch((err)=>{
console.log(err)
console.log('errorstatuscode:'+err.statusCode)
})
}