在GraphQL服务器中连接两个REST数据源通常涉及到数据获取、转换和合并的过程。以下是实现这一目标的基本步骤和相关概念:
以下是一个简单的示例,展示如何在Node.js中使用apollo-server
和axios
来实现这一过程。
const { ApolloServer, gql } = require('apollo-server');
const axios = require('axios');
// 定义GraphQL Schema
const typeDefs = gql`
type Query {
combinedData: CombinedDataType
}
type CombinedDataType {
data1: Data1Type
data2: Data2Type
}
type Data1Type {
id: ID
name: String
}
type Data2Type {
id: ID
value: Int
}
`;
// 创建数据获取器
async function fetchData1() {
const response = await axios.get('https://api.example.com/data1');
return response.data;
}
async function fetchData2() {
const response = await axios.get('https://api.example.com/data2');
return response.data;
}
// 创建数据合并器
async function getCombinedData() {
const data1 = await fetchData1();
const data2 = await fetchData2();
return { data1, data2 };
}
// 创建解析器
const resolvers = {
Query: {
combinedData: async () => {
return getCombinedData();
},
},
};
// 创建Apollo Server实例
const server = new ApolloServer({ typeDefs, resolvers });
// 启动服务器
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
通过上述步骤和示例代码,你可以在GraphQL服务器中连接两个REST数据源,并提供一个统一的查询接口。
领取专属 10元无门槛券
手把手带您无忧上云