首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在没有Apollo Server但具有express-graphql的情况下使用apollo-datasource-rest

在没有Apollo Server但具有express-graphql的情况下,可以使用apollo-datasource-rest来实现对RESTful API的数据源管理。

首先,需要安装apollo-datasource-rest依赖包。可以通过以下命令使用npm进行安装:

代码语言:txt
复制
npm install apollo-datasource-rest

接下来,创建一个新的数据源类,继承自apollo-datasource-rest的RESTDataSource类。在该类中,可以定义与RESTful API交互的各种方法。

代码语言:txt
复制
const { RESTDataSource } = require('apollo-datasource-rest');

class MyRESTDataSource extends RESTDataSource {
  constructor() {
    super();
    this.baseURL = 'https://api.example.com/';
  }

  async getSomeData() {
    return this.get('endpoint');
  }

  async postData(data) {
    return this.post('endpoint', data);
  }

  // 其他自定义方法...
}

在上述代码中,baseURL属性指定了RESTful API的基本URL,getSomeDatapostData分别定义了获取数据和提交数据的方法。

接下来,在GraphQL的解析器中使用该数据源类。首先,需要在GraphQL服务器的配置中将数据源类实例化,并将其传递给解析器的上下文。

代码语言:txt
复制
const { ApolloServer, gql } = require('apollo-server-express');
const { MyRESTDataSource } = require('./myRESTDataSource');

const typeDefs = gql`
  type Query {
    someData: [Data]
  }
`;

const resolvers = {
  Query: {
    someData: (_, __, { dataSources }) => {
      return dataSources.myRESTDataSource.getSomeData();
    },
  },
};

const server = new ApolloServer({
  typeDefs,
  resolvers,
  dataSources: () => ({
    myRESTDataSource: new MyRESTDataSource(),
  }),
});

// 将Apollo Server与express-graphql集成
const express = require('express');
const app = express();
server.applyMiddleware({ app });

app.listen({ port: 4000 }, () =>
  console.log(`Server ready at http://localhost:4000${server.graphqlPath}`)
);

在上述代码中,MyRESTDataSource被实例化并传递给了Apollo Server的dataSources选项。在解析器中,可以通过dataSources.myRESTDataSource来访问该数据源类的方法。

最后,可以通过GraphQL查询来调用数据源类的方法。在上述示例中,可以通过以下查询来获取数据:

代码语言:txt
复制
query {
  someData {
    field1
    field2
    # ...
  }
}

以上就是在没有Apollo Server但具有express-graphql的情况下使用apollo-datasource-rest的基本步骤。通过这种方式,可以方便地使用RESTful API作为数据源,并在GraphQL中进行查询和变更操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

16分8秒

人工智能新途-用路由器集群模仿神经元集群

领券