【问题标题】:What are the ways to expose GraphQL Schema as REST api?将 GraphQL Schema 公开为 REST api 的方法有哪些?
【发布时间】:2021-11-04 02:14:39
【问题描述】:

我开发了 Graphql api,并希望从中公开一些 REST API 端点。所以在这里我的意图是使用相同的 Graphql 逻辑将其公开为 rest api。到目前为止,我收到了有关使用沙发来实现这一点的帖子,并想检查是否有任何我们可以使用的 NestJS 或 Graphql 现有包。

【问题讨论】:

    标签: node.js graphql nestjs node-modules rest


    【解决方案1】:

    这取决于您迄今为止构建应用程序的方式。一般来说,NestJS 提倡 N 层架构,其中业务逻辑属于服务/提供者内部。当以这种方式构建时,在 GraphQL 解析器和 HTTP 控制器之间共享逻辑变得相对简单。

    解析器和控制器应该纯粹充当路由组件,接收请求/数据并将它们传递给适当的服务进行处理。

    @Resolver()
    class MyResolver {
       constructor(private readonly service: MyService) { }
    
       @Query()
       doSomething() {
         return this.service.doSomething();
       }
    }
    
    @Controller()
    class MyController {
       constructor(private readonly service: MyService) { }
    
       @Get()
       doSomething() {
         return this.service.doSomething();
       }
    }
    

    【讨论】:

      【解决方案2】:

      您已经开发了一个 GraphQL API ,然后您想将其公开为 REST ,或者您想在您的 GraphQL API 中集成一个 REST API?如果是第一个,那你就完全错过了 GraphQL 的意义。如果是第二个,那么您需要在 Apollo Server 构造函数中传递 context 参数,其中包含 dataSource 参数。然后你必须定义一个扩展RESTDataSourcehttps://www.apollographql.com/docs/apollo-server/data/data-sources/)的类。

      【讨论】:

      • 感谢您的快速帮助。我正在寻找第一个案例。我有一个应用程序,它在 REST api 上中继,其他人正在使用我的 Graphql api。我只想为该应用程序公开几个 REST 端点,但想为其使用相同的 Graphql 逻辑而不是单独编写一个。
      猜你喜欢
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 2018-08-28
      • 2015-05-03
      • 2019-10-28
      • 2020-09-17
      相关资源
      最近更新 更多