将GraphQL Schema公开为REST api的方法是什么?



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

这取决于到目前为止您是如何构建应用程序的。一般来说,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();
}
}

您已经开发了一个GraphQL API,然后希望将其公开为REST,还是希望将REST API集成到GraphQL API中?如果是第一个问题,那么您完全没有领会GraphQL的要点。如果是第二个,则需要在Apollo Server构造函数中传递包含dataSource参数的上下文参数。然后必须定义一个扩展RESTDataSource的类(https://www.apollographql.com/docs/apollo-server/data/data-sources/)。

最新更新