Elixir:Neuron(GraphQL 客户端)
graphql-github-io-zh-Hans生态项目与库
Elixir:Neuron(GraphQL 客户端)
简介
Neuron 是一个轻量级且易于使用的 GraphQL 客户端,专为 Elixir 开发。它提供简洁的 API,帮助开发者快速向 GraphQL 服务端发送查询(query)和变更(mutation)请求,并直接获得解析后的 JSON 数据。
- 项目地址:https://github.com/uesteibar/neuron
- 项目描述:A GraphQL client for Elixir
主要特性
- 简洁 API:仅需
Neuron.query/2与Neuron.mutate/2即可完成请求 - 变量支持:通过
variables选项传入查询或变更所需的动态参数 - 灵活的 URL 配置:支持在配置文件中设置全局地址,也支持在单次请求中覆盖
- 自定义请求头:可携带认证信息(如 Token、API Key)等自定义 HTTP Header
- 轻量实现:基于 Elixir 成熟的 HTTP 客户端封装,学习成本低,集成方便
安装
在 mix.exs 的 deps 中添加依赖:
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
相关链接
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
