首页
学习
活动
专区
工具
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中进行查询和变更操作。

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

相关·内容

  • GraphQL是API的未来,但它并非银弹

    我认为,GraphQL 将改变世界。将来,你可以使用 GraphQL 查询世界上的任何系统。我在创造这样的未来。那么我为什么要对使用 GraphQL 进行辩驳呢?我个人最讨厌的是,社区一直在宣传 GraphQL 的好处,而这些好处却非常普通,并且与 GraphQL 实际上没有任何关系。如果我们想推广采用,那么我们应该诚实,应该摘掉有色眼镜。这篇文章是对 Kyle Schrade 的文章“为什么使用 GraphQL”的回应。这并不是批评。这篇文章是一个很好的讨论基础,因为它代表了我在社区中经常听到的观点。如果你读了整篇文章,当然这会花一些时间,你就会完全理解,为什么我认为 Kyle 的文章应该改名为“为什么使用 Apollo”。

    01
    领券