首页
学习
活动
专区
工具
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, gRPC和端对端类型检验

StackPath最近发布了新的门户网站,它让用户可以一站式地配置我们所提供的服务(CDN,WAF, DNS以及Monitoring)。这个项目涉及到整合不同的数据源,以及一些现有和全新的系统。虽然我们认为开发效率的优先级在一个新启动的项目中是最高的,但我们还是希望在保证足够快的开发进度的前提下,尽可能早地做一些能够保证产品长期稳定运行的技术投资,以便我们能够持续不断地在一个健壮的基础设施上添加新的功能特性。最终我们选择了Apollo GraphQL+gRPC+React+TypeScript这样一套技术栈,并对使用它们的结果感到满意。在这篇博客中,我们会解释为何选择这些技术栈,并通过一个简单的示例项目进行论述。

02
领券