- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Apollo Server 2.0 能够接收文件上传,如 this blog post 中所述。 .
但是,我找到的所有教程和博客文章都只展示了如何上传文件。没有人演示如何实际检索文件并将其显示在屏幕上。
有人知道如何正确查询文件内容以在屏幕上显示吗?
另外,可能无法查询文件,而您必须构建一个单独的休息端点来检索内容?
一些想法:
我想象查询是这样的
query {
fetchImage(id: 'someid')
}
使用各自的服务器端定义
type Query {
fetchImage(id : ID!): Upload //maybe also a custom type, but how do I include the actual file contents?
}
Hint:
Upload
is a scalar type that apollo-server automatically adds to your type definition. It is used for the upload so I imaging it also being usable for the download/query. Please read the blog post mentioned above for more information.
最佳答案
来自 GraphQL 服务的响应始终序列化为 JSON 对象。从技术上讲,序列化中可以使用 JSON 以外的格式,但实际上仅使用 JSON,因为它满足 serialization requirements in the spec 。因此,通过 GraphQL 发送文件的唯一方法是将文件转换为某种与 JSON 兼容的格式。例如,您可以将 Buffer 转换为字节数组并将其作为整数数组发送。您还必须发送适当的 mime 类型。客户端在收到响应后将字节数组转换回可用格式。
如果您选择这条路线,则必须使用自己的标量或对象类型 - Upload
标量不支持序列化,因此如果您尝试将其用作输出类型,则会抛出异常(而且它实际上并不适合此类事情)。
但是,虽然这样做在技术上是可行的,但也是不建议的。序列化较大的文件可能会导致内存不足,因为无法通过 GraphQL 传输数据(整个响应必须位于内存中才能发送)。静态地提供文件要好得多 ( ideally using nginx instead of Node )。如果您的 API 需要引用该文件,它只需返回文件的路径即可。
关于node.js - apollo graphql 查询上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57660226/
下列说法正确的是: Javascript == Typescript Typescript != Javascript 对于 Dgraph 的 GraphQL+ 来说也是如此吗? GraphQL ==
我正在尝试通过使用 .graphql 文件并传递变量来对 Karate 进行测试。在我的 graphql 架构中,我试图重用另一个 .graphql 文件中的片段。我尝试按照 https://www.
从他们的文档中,它说: The leaf values of any request and input values to arguments are Scalars (or Enums) and
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
有没有一种技术可以让我在 GraphQL 中像这样声明 ADT? // TypeScript type SomeAlgebraicDataType = | { state: 'A', subSta
在基于 graphql API 构建新应用程序时,我们遇到了以下问题: 我们有一个带有输入字段的突变,其类型是具有自己验证规则的自定义标量(在这种情况下,输入是格式正确的电子邮件地址)。 在客户端,应
从语法上讲,您可以在模式中定义查询或变更,使其返回类型。 但是,操作定义(即客户端调用的查询或突变)必须有一个 SelectionSet,所以我必须这样做: mutation X { field }
我希望能听到这里专家的一些意见。我目前正在 NextJS 项目上工作,我的 graphql 正在运行在另一个 repo 中设置的模拟数据上。现在后端由其他开发人员构建,正在慢慢从模拟数据转向真实数据。
Graphql 中的架构和文档有什么区别? 架构是这样的: type Query { fo: String } 但文件是这样的: query SomeQuery { foo { ba
type Person { firstName: String!, lastName: String!, age: Int! } 如何查询所有 18 岁以上的人? 最佳答案 这
有没有办法提供 GraphQL Schema 设计的可视化图表(类似于 UML)? 背景: 我已经有了一个架构设计,要转换成 GraphQL API。但是,在开始 GraphQL 开发之前,我想创建我
我想了解 GraphQL 的(Java)实现是否足够智能,如果在其中一个提取器的执行期间抛出异常,可以取消预定的数据提取? 例如,我运行一个查询来检索客户的所有订单。假设客户有 100 个订单。这意味
我是graphql的新手,但是我在努力查询。 我想通过他们的电子邮件地址返回用户 我有一个类型定义的调用V1User,它具有以下字段 ID, 电子邮件, 密码, 角色 要根据电子邮件返回用户,此查询中
我将GraphQL包装器放在现有的REST API上,如Zero to GraphQL in 30 minutes中所述。我有一个产品的API端点,该端点具有一个指向嵌套对象的属性: // API R
在 GraphQL 中,空格似乎很重要,因为它分隔 token : { human(id: "1000") { name height } } 然而,spec says那个空格
我正在尝试使用带有属性的 sequelize 获取数据并将其传递给 graphql。 结果在控制台中很好,但 graphql 查询为属性字段返回 null。 我的解析器 getUnpayedL
有没有办法在 graphql 查询中生成静态值? 例如,假设我有一个 user具有名称和电子邮件字段的对象。出于某种原因,我总是希望用户的状态为“已接受”。我怎样才能写一个查询来完成这个? 我想做的事
我已关注 the documentation about using graphql-tools to mock a GraphQL server ,但是这会引发自定义类型的错误,例如: Expect
我今天在生产中有以下 graphql 模式定义: type BasketPrice { amount: Int! currency: String! } type BasketItem {
像这样的graphql模式: type User { id: ID! location: Location } type Location { id: ID! user: User }
我是一名优秀的程序员,十分优秀!