知海

Elixir:Neuron(GraphQL 客户端)

graphql-github-io-zh-Hans生态项目与库

Elixir:Neuron(GraphQL 客户端)

简介

Neuron 是一个轻量级且易于使用的 GraphQL 客户端,专为 Elixir 开发。它提供简洁的 API,帮助开发者快速向 GraphQL 服务端发送查询(query)和变更(mutation)请求,并直接获得解析后的 JSON 数据。

主要特性

  • 简洁 API:仅需 Neuron.query/2Neuron.mutate/2 即可完成请求
  • 变量支持:通过 variables 选项传入查询或变更所需的动态参数
  • 灵活的 URL 配置:支持在配置文件中设置全局地址,也支持在单次请求中覆盖
  • 自定义请求头:可携带认证信息(如 Token、API Key)等自定义 HTTP Header
  • 轻量实现:基于 Elixir 成熟的 HTTP 客户端封装,学习成本低,集成方便

安装

mix.exsdeps 中添加依赖:

elixir 复制代码
def deps do
  [
    {:neuron, "~> 0.1"}
  ]
end

然后执行:

bash 复制代码
mix deps.get

最新版本号请参阅 Hex.pm 上的 neuron 页面

配置

config/config.exs 中进行全局配置:

elixir 复制代码
config :neuron,
  url: "http://localhost:4000/graphql",
  headers: [
    {"Authorization", "Bearer your_token"}
  ]
配置项 说明 是否必填
url GraphQL 服务端端点地址
headers 自定义 HTTP 请求头(如认证)

快速开始

发送查询

使用 Neuron.query/2 发送 GraphQL 查询:

elixir 复制代码
{:ok, response} = Neuron.query("""
{ user(id: 1) { name email } }
""")

# 提取数据
response["data"]["user"]["name"]

使用变量

elixir 复制代码
{:ok, response} = Neuron.query("""
query($userId: ID!) {
  user(id: $userId) {
    name
    age
  }
}
""", variables: %{"userId" => 1})

执行变更

使用 Neuron.mutate/2 发送 GraphQL 变更:

elixir 复制代码
{:ok, response} = Neuron.mutate("""
mutation($name: String!) {
  createUser(name: $name) {
    id
    name
  }
}
""", variables: %{"name" => "Neuron"})

单次请求指定 URL

如果不想使用全局配置的 URL,可在调用时通过 url 选项指定:

elixir 复制代码
{:ok, response} = Neuron.query(
  "{ hello }",
  url: "https://api.example.com/graphql"
)

错误处理

请求失败时返回 {:error, reason}

elixir 复制代码
case Neuron.query("{ products { id name } }") do
  {:ok, %{"data" => data}} ->
    IO.inspect(data)

  {:error, reason} ->
    IO.puts("请求失败:#{inspect(reason)}")
end

相关链接

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。