【发布时间】:2020-10-06 20:40:07
【问题描述】:
我正在开发一个在 Web 浏览器上显示 .xml 和 .txt 文件列表的项目。使用 MERN Graphql 堆栈,是否可以有两个不同的端点,例如 http://localhost/xml 和 http://localhost/txt。大多数文档都说 Graphql 使用单个端点“/graphql”因此询问。
【问题讨论】:
标签: node.js reactjs mongodb graphql apollo-server
我正在开发一个在 Web 浏览器上显示 .xml 和 .txt 文件列表的项目。使用 MERN Graphql 堆栈,是否可以有两个不同的端点,例如 http://localhost/xml 和 http://localhost/txt。大多数文档都说 Graphql 使用单个端点“/graphql”因此询问。
【问题讨论】:
标签: node.js reactjs mongodb graphql apollo-server
您可以启动两个 GraphQL 服务器以在一个 Express 应用程序中为两个端点提供服务。但在您的特定用例中,不要;这是一种反模式。 GraphQL API 旨在基于一个单一的根端点。所有查询的详细信息都应由选择集和/或参数表示,而不是由 REST API 典型的端点表示。在您的情况下,正确的 GraphQL 查询应如下所示:
query {
listFiles(ext: "xml") {
name
modified
}
}
您的架构可能如下所示:
type Query {
listFiles(ext: String): [File]
}
然后使用listFiles 解析器执行逻辑以根据给定参数检索列表。
【讨论】:
listFiles(ext...) 表示 listFiles 解析器将有一个 [passed as 2nd arg] 参数/arg 命名为 ext