问题标签 [absinthe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
407 浏览

elixir - 长生不老药苦艾酒 input_object

为什么 Elixir Absinthe 中的 input_object 不起作用?

喜欢

我尝试过,但它为以下有效负载抛出错误

错误

0 投票
2 回答
160 浏览

elixir - Graphql 查询测试在 Phoenix 中没有正确返回结果

大家好,我是 Elixir 的新手,一般是 FP 的新手。所以基本上我尝试学习 Elixir,然后跳到构建一个 graphql api 服务器。

我阅读并遵循了《用苦艾酒在 Elixir 中制作 GraphQL APIs》一书,并坚持对 graphql 查询进行测试。

这本书是这样说的:

这是我尝试的,我注意到在我的本地机器上,当我进行查询时,它使用 POST 方法而不是 GET 方法,所以我将其更改为发布:

然后,当我运行测试时,它失败了,因为查询返回空结果。

然后我尝试通过 curl 测试查询,查询工作并返回结果。

0 投票
1 回答
130 浏览

elixir - GraphQL API 参数问题 - Elixir

我需要在应用程序中发表评论。这已实施并且工作正常。现在,我有一个额外的要求是上传照片和评论。因此,我在应用程序中实现了相机功能,并且现在将图像 URI 发送到 GraphQL API。我已经重构了 elixir 中的模式和类型。但是,当它到达服务类时,参数不知何故消失了。

评论.ex

schema.ex 包含:

类型.ex

在我的本地服务器日志上:

[info] POST /api/graphql
[debug] QUERY OK source="users" db=1.6ms
SELECT u0."id", u0."email", u0."fb_id", u0."full_name", u0." avatar_url", u0."password_digest", u0."email_confirmed_at", u0."inserted_at", u0."updated_at" FROM "users" AS u0 WHERE (u0."id" = $1) [1]
[调试] ABSINTHE schema=MyApp.API.Schema variables=%{"artId" => "comma-2005-06", "base64Image" => "data:image/jpeg;base64,/9j/4QMMRXhpZgAASUkqAAgAAAA3ADIBAgAUAAAAogIAAA8BAgAKAAAAtg​​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​​x0Prmi61rUbu5d7k7ctkEcYH071R1OS1ijVpiHZugA3ZFSTZp2W7LOi6nf3lkHYvHDn5QRyV5A59PQdKni8Ox3cDyNKXVSeC+Npx3/Ssg61cpaIsRCxjJClai0+aUGaR7hwshBI7YoCCdpJon0R38P3M5toUZphiTPX8+uKg1VrjV78i/uCtuWwQgx8v5jNWVzKxdMntzVW8hlmwsS5btiglGsZ9FtIYotPjjFwF+fYGAJx3zWfq2q3V2xWSHy0I4Cjg8fqKoRwT2dwsdyoDEA4LZyK6CSTztPEakMWXByOlFim9blvwnqV3YWM7xbVndcxuAcrznPB6+/vTj4g1K71DdcXryRZysTPkE4Ayc9egpvh61nWzMTCM5J2hT0H40y1l0OzlZpooxOjHBRckmgPQk1dBcqzFfmJyD6Huay9MjaK6feQxY9M4wK0k1YallI4igKgkZ+4fSsueGa3umEnGDwQeo9aBJXRo+IPElvb2n2SNFeU7QwH3075H1rJsriWQEM21W5IH4/nVXXFt/PWSIjd0IA5+tRNNJ5IZHKsR1FO1yoc0Xc6/R7jT7OyuTJaxyzS5JLAc1x89zvu5XgUoN5x82Tj3NXvtQurQRN8vHUHrTdN0ae54t4iwwcH1q1sSlYriV5diyyF5O7EdatzR2T7XEKs7AZB5xiq0elzSXTiV/L8pyrZFWo5baxuhmNLjaOGPApoUHFLlRD4hubuS1eKWVxayPuMKghQ553DHSorOwtzapO2RK2SCDU+v6q1+uyKDyohnCk7vxrLtYH4k+7t6c0dRqL5bs0vtSRQJbwIAEOcgdTWffwTXMuOQpHzE9a1LGKFIjIyqzY5PWmRCS9uTHGMccfSnsF0zP0iymtphl1cDknpzW3q2qXdwqW4ghREUAFGK5OOpGOvvUYtxa3Xl3DKoH4gj1puqX0VwI4bWIRqg5OeSaLArSlfcngtwtuS5DsVH5Vm3lusoYbc5G3noRTImnRijysg9R6VpL5fkBkIbjsc0dR3ktLmXZLJbNKYnZFlXY6g4DAEEA/iKdZJEt0Wk" <> ..., "body" => "Sample picture", "imageName" => "1-1536824593426" }}}}}}}示例图片", "imageName" => "1-1536824593426"}示例图片", "imageName" => "1-1536824593426"}


我不确定这有什么问题。但是,突变只显示了旧的论点。它不包含添加的新参数。此外,在我的解析器服务中,我只得到 art_id 和 body 作为参数,如下所示。

我错过了什么吗?有人可以帮忙吗?

0 投票
2 回答
1102 浏览

elixir - 未找到 elixir 项目的十六进制依赖项 - 毒药、苦艾酒

我收到unchecked dependency for environment错误ecto.createecto.migrate。我有以下mix.exs文件依赖项

当我运行命令时,mix ecto.create && mix ecto.migrate出现以下错误。

我是十六进制,长生不老药和混合物的新手。

0 投票
0 回答
319 浏览

elixir - 如何将 GraphQL Schema Stitching 与 Elixir Absinthe 一起使用?

为了独立开发和部署,我们希望使用 Elixir Absinthe 将我们的模式分解为 Erlang 生态系统中的单独微服务,但似乎他们还没有准备好这个功能。所以我的问题是。

是否可以使用 Elixir Absinthe 从多个底层 GraphQL API 创建单个 GraphQL 模式?

0 投票
2 回答
285 浏览

graphql - Absinthe Graphql 嵌套查询安全性

我一直在阅读,使用最大查询深度来保护您的应用程序很重要。意思是,限制查询的“级别”数量。一个非常深的查询示例:

如何知道查询的深度级别?并最终不允许执行深度超过 4 的查询。我可以获得完整的查询以手动计算深度吗?还是他们已经实施了?

这个问题也在这里描述:https ://www.howtographql.com/advanced/4-security/

0 投票
1 回答
192 浏览

elixir - 使用苦艾酒时从 Guardian 错误处理程序发送 graphql 响应

我有一个带有苦艾酒的 Phoenix 应用程序,用于 Graphql API。

Guardian 用于验证在标头中提供 Bearer 令牌的请求。在提供无效令牌之前,这一切都很好。我在我的 Guardian 管道中指定了一个错误处理程序,它目前只响应 401 http 响应:

这对任何 graphql 客户端都不友好,我的解析器并不真正关心令牌是否无效,因为他们有自己的检查来查看上下文中是否提供了用户。

如果令牌无效,有没有办法从错误处理程序继续管道,所以我可以给出正确的 graphql 响应?

0 投票
1 回答
1144 浏览

elixir - 如何解析子字段以便将可选参数添加到 HTTP 查询?

注意:这是一个大大简化的例子,但问题是一样的。

我正在尝试/blog-posts使用 GraphQL 接口包装现有的 HTTP 服务。仅当我传入查询参数时,服务才会在其响应中返回一些额外的数据extra-data=true。所以,

  • GET /blog-posts: 获取 ID 和标题
  • GET /blog-posts?extra-data=true: 获取 ID、标题和extra-data字段

我有一个类似于以下的苦艾酒模式:

我的问题是我不知道如何实现extra_data解析器,这样它就不会/blog-posts?extra-data=true在已经调用/blog-posts. 有一个中间件https://hexdocs.pm/absinthe/Absinthe.Middleware.Batch.html旨在帮助解决类似的问题,N+1 查询,但我不知道如何在我的情况下应用它。

有什么建议么?

0 投票
2 回答
1291 浏览

elixir - 如何在 Absinthe GraphQL 请求中接受 JSON

我试图在我的 graphql 实现中接收 JSON 字符串,但我定义的用于处理 JSON 的自定义标量不断出现错误。

我已经定义了一个自定义标量,以将 JSON 正确序列化为长生不老药映射。在我的代码到达自定义标量的解析阶段之前,我收到错误数据类型无效。我正在尝试使用https://github.com/absinthe-graphql/absinthe/wiki/Scalar-Recipes#json-using-jason创建标量,但是我已修改为使用 Poison 而不是 Jason。

我的苦艾酒使用我创建的 :json 标量类型。

我的标量定义和 graphql 模式定义

发送以下查询时:

我收到一个syntax error before: \"\\\":\\\"\"

我收到一个"Argument \"client_store\" has invalid value \"hello\"

通过单元测试发送 GraphQL 查询Phoenix.ConnTest

0 投票
0 回答
196 浏览

elixir - 授权订阅:如果条件不满足则跳过触发器

我有一个 Phoenix Web 应用程序,并且正在使用 Absinthe 进行订阅,只要将新Comment的添加到Topic. 只有当用户是主题的成员时,我才尝试发送订阅,否则根本不发送任何内容。

到目前为止,我已经尝试过订阅文档config中提到的玩,但似乎它只在创建订阅时执行,而不是在触发它时执行。我希望它很简单:

现在,我刚回来{:ok, nil},但我希望有更好的方法来实现这一目标。