首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从Elixir API创建GraphQL查询?

从Elixir API创建GraphQL查询的步骤如下:

  1. 首先,确保你已经安装了Elixir和Phoenix框架。可以使用Mix工具创建一个新的Phoenix项目。
  2. 在Phoenix项目中,你需要添加GraphQL的依赖。可以使用Absinthe库,它是一个流行的Elixir GraphQL实现。在mix.exs文件的deps函数中添加以下依赖项:
代码语言:txt
复制
{:absinthe, "~> 1.6"},
{:absinthe_plug, "~> 1.5"},
{:absinthe_ecto, "~> 0.1"}

然后运行mix deps.get命令安装依赖。

  1. 创建一个GraphQL模式文件。在lib目录下创建一个新的文件夹,例如"lib/my_app/graphql",然后在该文件夹中创建一个新的文件,例如"schema.ex"。在该文件中,你可以定义GraphQL模式和类型。
代码语言:txt
复制
defmodule MyApp.GraphQL.Schema do
  use Absinthe.Schema

  query do
    field :hello, :string do
      resolve &MyApp.Resolvers.HelloResolver.hello/2
    end
  end
end

在上面的示例中,我们定义了一个名为"hello"的查询字段,它返回一个字符串。我们还指定了一个解析器函数来处理该查询。

  1. 创建一个解析器。在lib目录下创建一个新的文件夹,例如"lib/my_app/resolvers",然后在该文件夹中创建一个新的文件,例如"hello_resolver.ex"。在该文件中,你可以定义解析器函数来处理查询。
代码语言:txt
复制
defmodule MyApp.Resolvers.HelloResolver do
  def hello(_args, _info) do
    "Hello, World!"
  end
end

在上面的示例中,我们定义了一个名为"hello"的解析器函数,它返回字符串"Hello, World!"。

  1. 创建一个GraphQL路由。在lib目录下的"my_app_web/router.ex"文件中,你可以添加GraphQL路由。
代码语言:txt
复制
defmodule MyAppWeb.Router do
  use MyAppWeb, :router

  pipeline :api do
    plug :accepts, ["json"]
  end

  scope "/api" do
    pipe_through :api

    forward "/graphql", Absinthe.Plug,
      schema: MyApp.GraphQL.Schema,
      context: %{}
  end
end

在上面的示例中,我们将"/graphql"路径映射到Absinthe.Plug,并指定了GraphQL模式和上下文。

  1. 运行Phoenix应用程序。使用mix phx.server命令启动Phoenix应用程序。

现在,你可以通过发送POST请求到"/api/graphql"路径来执行GraphQL查询。例如,你可以使用curl命令发送一个查询:

代码语言:txt
复制
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"query":"{ hello }"}' \
  http://localhost:4000/api/graphql

以上就是从Elixir API创建GraphQL查询的基本步骤。你可以根据具体需求扩展和定制GraphQL模式、类型和解析器。对于更复杂的应用程序,你可能需要使用Ecto库来处理数据库查询,并在解析器中集成它。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

防止你的GraphQL API被恶意查询

在这篇文章中,他描述了他们是如何在攻击中保护GraphQL API。 使用GraphQL,你可以随时查询想要的内容。 这对于使用API来说是惊人的,但也具有复杂的安全隐患。 ...,但幸运的是,Apollo团队创建了persistgraphql,它会自动你的客户端代码中提取所有查询,并生成一个不错的JSON文件。...如果我们只通过查询白名单,已经严重限制了他们的选择,并且破坏了拥有GraphQL API的重要性。 那些限制是我们无法使用的,所以我们得重新设计。...(尽管DataLoader可能会缓解数据库压力,但网络和处理压力不会) 我们没有将第一个参数的类型设置为Int(允许任意数量),而是使用graphql-input-number创建了一个自定义标量,该标量将最大值限制为...(The GitHub GraphQL API also uses Query Cost Analysis) 实施查询成本分析 在npm上有几个包来实现查询成本分析。

1.8K10

【译】如何在 Node.js 中创建安全的 GraphQL API

原文地址:How to Create a Secure Node.js GraphQL API 作者:Marcos 本文的目的是提供一份快速指南 -- 《如何快速在如何在 Node.js 中创建安全的...可能会想到有以下的问题: 使用 GraphQL API 的目的是什么? 什么是 GraphQL API? 什么是 GraphQL 查询GraphQL 有什么好处?...如前面所讲述的那样,查询 (query) 是客户端 API 读取和操作数据的方式。你可以传递一个对象的类型,并且定义所希望返回的字段类型。...接下来,我们将演示如何使用 GraphQL、Node.js 和 Express 来构建 API ! 准备开始 GraphQL 我们会先为 GraphQL API 提供一个构思。...; 创建模块 (Module) 的基本方法; 测试我们的 GraphQL API; 为了将内容侧重于开发使用,本文忽略了开发中一些重要的内容,简单总结如下: 新增内容时需要校验 对服务中的错误进行正确处理

2.5K20

用Node.js创建安全的 GraphQL API

本文的目标是提供关于如何创建安全的 Node.js GraphQL API 的快速指南。 你可能会想到一些问题: 使用 GraphQL API 的目的是什么? 什么是GraphQL API?...虽然本文应该展示一个关于如何构建和使用GraphQL API的简单但真实的场景,但我们不会去详细介绍GraphQL。...因为GraphQL团队提供了全面的文档,并在Introduction to GraphQL中列出了几个最佳实践。 什么是GraphQL查询? 如上所述,查询是客户端API读取和操作数据的一种方式。...使用GraphQL API的目的是什么? 创建API的目的是使自己的软件具有可以被其他外部服务集成的能力。...总结和最后的想法 让我们回顾一下本文的内容: 在Node.js下可以通过Express和GraphQL库来构建GraphQL API; 基本的GraphQL使用; 查询和修改的基本用法; 为项目创建模块的基本方法

1.6K30

什么是GraphQL?【Programming】

Graphql 是一种查询语言、一个执行引擎和一个规范,它引导开发人员重新思考如何构建客户端和 API 应用程序 image.png GraphQL是当今软件技术中最大的流行语之一。...尽管该规范对GraphQL的语法、什么是有效的查询以及模式如何工作非常具体,但是它没有提供关于如何存储数据或者应该使用什么实现编程语言的GraphQL服务器的方向。...这在软件领域是非常强大而且相对独特的——它允许用任意数量的编程语言创建GraphQL服务器,而且客户机会准确地知道它们是如何工作的,因为它们符合规范。...如果您选择的语言中没有实现,您可以自由创建自己的语言。 总结 Graphql 是一个令人兴奋的、相对较新的进入开源 API 领域的工具。...它将查询语言和执行引擎与定义 GraphQL 实现外观和功能的开源规范相结合。 GraphQL已经开始改变公司对构建客户端和API应用程序的看法。

88100

这才是GraphQL最详细的解释

翻译:疯狂的技术宅 来源:opensource GraphQL是一种查询语言、一种执行引擎和一种规范,它引领开发人员重新思考应该怎样去构建客户端和API。 ?...虽然规范对 GraphQL 的语法的说明非常的具体,例如什么是有效查询以及 schema 如何工作,但它没有规定怎样对数据进行存储和 GraphQL 服务器应该用哪种编程语言实现。...如果你选择的语言还没有对应的实现,也可以创建自己的实现。 总结 GraphQL 是一个令人兴奋的、相对较新的开源 API。...它将查询语言、执行引擎与开源规范相结合,该规范定义了 GraphQL 实现的外观和功能。 GraphQL 正在改变构建客户端和 API 应用的方式。...GraphQL如何改变你的开发方式并使你获得成功?只有一种方法——用 GraphQL 去实现一些东西!

94830

思考,问题和方法

(感谢小山同学贡献的老爷子亲笔阐述) 仔细想想,它简单地可怕,就像物理学的大一统理论一样,试图纷繁复杂中跳脱出来,回归本源。...spawn:创建一个资源。对于 erlang,这资源是 process;对某个 service,是 service 本身。 send / receive:给资源发指令和接受指令。...我们的 Open Chain Access Protocal(OCAP)选用 GraphQL 而非 REST 接口来做 API 层,也有类似的考量。...elixirGraphQL lib) Absinthe 的 GraphQL 的 type notation 定义 Ecto 的 DB repo 定义 Ecto 的 DB schema 定义 Ecto...而之后,当我们要大规模增加新的 API 时,我们将能够很快地支持。 这目前是我们对「如何用更先进更高效的方式来构建服务及其生态?」的一个答案。它离完美还有十万八千里,但立等可用。

69100

API迭代中解放!GraphQL的优缺点与团队价值

facebook推出的GraphQL,是一个特点非常鲜明的API查询语言。与SQL类似,GraphQL是一套规范,具体实现有很多框架。...调用方的角度,可以非常方便且自由地增加查询字段。 图片 左边的调用图来看,请求了hero的friends成员,里面包含多个对象。如右图所示,可以很方便地聚合返回 1.2....』这类需求,传统做法是,用如下不同的URL来区分 - api/app - api/miniapp 图片 而使用GraphQL,后端不需要改变/新增接口,前端可以通过自定义请求参数来控制返回的数据。...2.3 业务价值 对于业务的价值如下: 两端接口定义更方便理解 前端扩张数据控制权 后端接口适配中解放 图片 GraphQL的灵活性,决定了前端无需与后台对齐接口,就可以开发。...图片 数据结构适配GraphQL主要是一下几点: 不支持直接传输文件、视频等数据 数据量过大导致的性能瓶颈 业务的数据需适配GraphQL的『图』,避免出现递归查询 数据库的设计 依赖服务的设计 可能存在的字段重复和冲突

3.3K341

Java一分钟之-GraphQL查询语言与API设计

在现代Web开发中,GraphQL作为一种革命性的查询语言和API设计规范,正逐步改变我们构建和消费API的方式。它允许客户端精确请求所需的数据,从而减少了过载和冗余,提高了应用的性能和灵活性。...GraphQL核心理念 GraphQL的核心在于提供一种声明式的数据查询方式,它允许客户端定义所需数据的结构和字段,而不是依赖于固定的REST API端点。...强类型与自描述:GraphQL Schema清晰定义数据类型和关系,便于开发和维护。 统一的查询入口:一个GraphQL endpoint满足所有数据需求,简化API架构。 常见问题与易错点 1....性能优化:关注查询性能,合理使用缓存策略,避免N+1查询。 安全第一:设计之初就考虑API的安全性,包括认证、授权和数据过滤。...持续学习与实践:跟踪GraphQL社区动态,参与讨论,不断优化API设计。 结语 GraphQL以其强大的灵活性和高效的数据获取方式,正在逐步成为现代API设计的标准之一。

12810

GraphQL 在微服务架构中的实践

请求其他微服务中获取时,更不能通过简单的改变 SQL 查询来解决。...在处理 N + 1 问题之前,我们要真正了解如何解决这一类问题的核心逻辑,也就是将多次查询变成一次查询,将多次操作变成一次操作,这样能够减少由于多次请求增加的额外开销 —— 网络延迟、请求解析等;GraphQL...经过评估之后,我们决定在 GraphQL Elixir 实现 Absinthe 上进行一层包装,并对客户端的请求进行语法与语义的解析,将字段对应的树包装成子查询发送给下游的服务,最终再由最前面的 GraphQL...请求其他微服务中获取时,更不能通过简单的改变 SQL 查询来解决。...经过评估之后,我们决定在 GraphQL Elixir 实现 Absinthe 上进行一层包装,并对客户端的请求进行语法与语义的解析,将字段对应的树包装成子查询发送给下游的服务,最终再由最前面的 GraphQL

2.6K20

GraphQL 在微服务架构中的实践

作为 Facebook 在 2015 年推出的查询语言,GraphQL 能够对 API 中的数据提供一套易于理解的完整描述,使得客户端能够更加准确的获得它需要的数据,目前包括 Facebook、Twitter...Relay 标准其实为三个与 API 有关的最常见的问题制定了一些规范: 提供能够重新获取对象的机制; 提供对如何对连接进行分页的描述; 标准化 mutation 请求,使它们变得更加可预测; 通过将上述的三个问题规范化...请求其他微服务中获取时,更不能通过简单的改变 SQL 查询来解决。...在处理 N + 1 问题之前,我们要真正了解如何解决这一类问题的核心逻辑,也就是将多次查询变成一次查询,将多次操作变成一次操作,这样能够减少由于多次请求增加的额外开销 —— 网络延迟、请求解析等;GraphQL...经过评估之后,我们决定在 GraphQL Elixir 实现 Absinthe 上进行一层包装,并对客户端的请求进行语法与语义的解析,将字段对应的树包装成子查询发送给下游的服务,最终再由最前面的 GraphQL

1.5K10

java如何对接快递查询接口API

不限量的快递物流轨迹查询接口免费对接,原理是将订单内容订阅到接口后,接口对订单进行实时监控,当物流轨迹有更新时,实时获取数据,对数据进行格式化,计算运单预计到达时间、全流程的物流状态、当前所在城市等数据后...如EMS物流单号应选择快递公司编码(EMS) (3)、 API测试地址:http://testapi.kdniao.cc:8081/api/dist (4)、API正式地址:http://api.kdniao.cc.../api/dist  (5)、定时推送新的物流信息 (6)、接口秘钥申请:快递鸟(http://www.kdniao.com/reg) JSON请求 { "ShipperCode":"SF",...private String AppKey="请申请"; //测试请求url private String ReqURL = "http://testapi.kdniao.cc:8081/api.../dist"; //正式请求url //private String ReqURL = "http://api.kdniao.cc/api/dist"; /**

1.8K60

GraphQL详解

Endpoints对比 REST API's Endpoints GraphQL 实际上将多个 HTTP 请求聚合成了一个请求,将多个 restful 请求的资源变成了一个根资源 POST 访问其他资源的...创建GraphQL服务器的最终目标是: 允许查询通过图和节点的形式去获取数据。 是什么让我放弃了restful api?...GraphQL特点总结 声明式数据获取(可以对API进行查询): 声明式的数据查询带来了接口的精确返回,服务器会按数据查询的格式返回同样结构的 JSON 数据、真正照顾了客户端的灵活性。...Tipe (github): 一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你 的内容,并通过 GraphQL 或 REST API 任何地方访问它。...Hasura:一个 BaaS(后端即服务),允许你在 Postgres 上创建数据表、定义权限并使用 GraphQL 接口查询和操作。

2.5K00

我为什么要放弃RESTful,选择拥抱GraphQL

Endpoints对比 REST API's Endpoints GraphQL 实际上将多个 HTTP 请求聚合成了一个请求,将多个 restful 请求的资源变成了一个根资源 POST 访问其他资源的...创建GraphQL服务器的最终目标是: 允许查询通过图和节点的形式去获取数据。 是什么让我放弃了restful api?...GraphQL特点总结 声明式数据获取(可以对API进行查询): 声明式的数据查询带来了接口的精确返回,服务器会按数据查询的格式返回同样结构的 JSON 数据、真正照顾了客户端的灵活性。...Tipe (github): 一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你 的内容,并通过 GraphQL 或 REST API 任何地方访问它。...Hasura:一个 BaaS(后端即服务),允许你在 Postgres 上创建数据表、定义权限并使用 GraphQL 接口查询和操作。

2.4K40

GraphQL

Endpoints对比 REST API's Endpoints GraphQL 实际上将多个 HTTP 请求聚合成了一个请求,将多个 restful 请求的资源变成了一个根资源 POST 访问其他资源的...创建GraphQL服务器的最终目标是: 允许查询通过图和节点的形式去获取数据。 是什么让我放弃了restful api?...GraphQL特点总结 声明式数据获取(可以对API进行查询): 声明式的数据查询带来了接口的精确返回,服务器会按数据查询的格式返回同样结构的 JSON 数据、真正照顾了客户端的灵活性。...Tipe (github): 一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你 的内容,并通过 GraphQL 或 REST API 任何地方访问它。...Hasura:一个 BaaS(后端即服务),允许你在 Postgres 上创建数据表、定义权限并使用 GraphQL 接口查询和操作。

2.6K65

为什么我劝你放弃了Restful API

GraphQL 思考模式 使用GraphQL接口设计获取数据需要三步: 首先要设计数据模型,用来描述数据对象,它的作用可以看做是VO,用于告知GraphQL如何来描述定义的数据,为下一步查询返回做准备;...创建GraphQL服务器的最终目标是: 允许查询通过图和节点的形式去获取数据。 GraphQL执行逻辑 有人会问: 使用了GraphQL就要完全抛弃REST了吗?...GraphQL特点总结 声明式数据获取(可以对API进行查询): 声明式的数据查询带来了接口的精确返回,服务器会按数据查询的格式返回同样结构的 JSON 数据、真正照顾了客户端的灵活性。...Tipe (github): 一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你 的内容,并通过 GraphQL 或 REST API 任何地方访问它。...Hasura:一个 BaaS(后端即服务),允许你在 Postgres 上创建数据表、定义权限并使用 GraphQL 接口查询和操作。

2.8K20

如何NumPy直接创建RNN?

那么,有一个有趣的问题可以思考一下: 不使用Tensorflow等框架,只有Numpy的话,你该如何构建RNN? 没有头绪也不用担心。这里便有一项教程:使用Numpy从头构建用于NLP领域的RNN。...为了展示输入到输出的情况,我们先随机初始化每个单词的词嵌入。...正如所知,ground_truth output(y)的形式是[0,0,….,1,…0]和predicted_output(y^hat)是[0.34,0.03,……,0.45]的形式,我们需要损失是单个值来它推断总损失...实际上,这意味着激活节点的角度来看这个变化(误差)值。 类似地,a相对于z的变化表示为da/dz,z相对于w的变化表示为dw/dz。 最终,我们关心的是权重的变化(误差)有多大。

1K30

如何NumPy直接创建RNN?

那么,有一个有趣的问题可以思考一下: 不使用Tensorflow等框架,只有Numpy的话,你该如何构建RNN? 没有头绪也不用担心。这里便有一项教程:使用Numpy从头构建用于NLP领域的RNN。...为了展示输入到输出的情况,我们先随机初始化每个单词的词嵌入。...正如所知,ground_truth output(y)的形式是[0,0,….,1,…0]和predicted_output(y^hat)是[0.34,0.03,……,0.45]的形式,我们需要损失是单个值来它推断总损失...实际上,这意味着激活节点的角度来看这个变化(误差)值。 类似地,a相对于z的变化表示为da/dz,z相对于w的变化表示为dw/dz。 最终,我们关心的是权重的变化(误差)有多大。

97820

Supabase 让你用一个周末即可开发一个百万并发应用

功能概览 ✅ Postgres 数据库托管 ✅ 身份验证和授权 ✅ 自动生成的 API ✅ REST ✅ GraphQL ✅ 实时订阅 ✅ Serverless函数 ✅ 数据库函数 ✅...Realtime[2] 是一个 Elixir 服务器,允许你使用 WebSocket 监听 PostgreSQL 的插入、更新和删除。...pg_graphql[6] 公开GraphQL API的PostgreSQL扩展 postgres-meta[7] 是一个 RESTful API,用于管理你的 Postgres,允许你获取表、添加角色和运行查询等...Kong[8] 是一个云原生 API 网关。 功能展示 PostgreSQL Supabase 使用 PostgreSQL 作为其数据库引擎,提供强大的查询和存储能力。...构建您的架构,创建复杂的关系,并导入导出 CSV 文件。 无需安装第三方 SQL 工具,您可以直接 Supabase 仪表板运行查询

24610

如何将Web主页性能提升十倍以上?

这里再介绍一点我们的情况:我们的主页由 React(TypeScript)、Phoenix(Elixir)、Puppeteer(headless Chrome)以及 GraphQL API(Ruby on...而我们选择了立足 Fastly 层级对部分 GraphQL 请求进行缓存: 我们的 React 应用会标注出那些可进行缓存的 GraphQL 查询。...在发送 HTTP 请求之前,我们以请求本体为基础构建一条附加 URL 参数,其中包含 GraphQL 查询与变量(我们配合 Apollo Client 使用自定义 fetch)。...这意味着我们可以通过请求本体当中的 GraphQL 查询不断发送 POST 请求,并在无需接触服务器的前提下立足边缘位置完成缓存。 ?...利用持久化 GraphQL 查询并发送 GET /graphql/:queryId 以使用 HTTP 缓存机制。

3.9K40
领券