2 个稳定版本
1.0.1 | 2022年10月23日 |
---|---|
1.0.0 | 2022年10月22日 |
#45 in #graphql-server
29KB
508 代码行
Rust GraphQL 服务器,用于搜索NFT(元)数据
先决条件
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- 克隆仓库
git clone https://github.com/MarkTanashchuk/rust_graphql_nft.git && cd ./rust_graphql_nft
-
创建 Infura Web3 API密钥并复制网络端点(带有https)
-
配置
.env
文件,例如。
TRANSPORT_URL=https://mainnet.infura.io/v3/API_KEY
# PORT=8080 - Optional, 8080 by default
用法
启动服务器
cargo run --release
打开 localhost:{PORT}。默认情况下为 localhost:8080
入门
注意:仅支持以太坊地址格式和ERC721标准
自定义查询
服务器使用 async-graphql 编写,因此要添加新查询,您需要根据文档更新 graphql/mod.rs 文件。
自定义元数据
要添加带有自定义字段的自定义元数据格式,请向 src/graphql/token/metadata 文件夹添加一个具有所需结构的新文件。
获取单个NFT的示例
# Variables
# {
# "address": "0x7f371bed0bdb2012c01f219ca1c4cbcb35f37aef",
# "id": 7
# }
query GetTokenWithMetadata($address: String!, $id: String!) {
ethToken(address: $address, id: $id) {
tokenAddress
tokenId
tokenURI
tokenMetadata {
name
description
image
attributes {
traitType
value
}
}
}
}
获取多个NFT的示例
# Variables
# {
# "address": "0x7f371bed0bdb2012c01f219ca1c4cbcb35f37aef"
# }
query GetTokenWithMetadata($address: String!) {
ethTokens(address: $address) {
tokenAddress
tokenId
tokenURI
tokenMetadata {
name
description
image
attributes {
traitType
value
}
}
}
}
故障排除
Api错误:代码 401
TRANSPORT_URL
在 .env
文件中设置不正确,或者提供的 API_KEY
不允许未经授权的访问
如果是 infura
,请创建一个新的Web3 API,点击管理密钥,并将完整的Ethereum端点复制到 TRANSPORT_URL
中的 .env
文件。
Abi错误:无效数据
提供给 QueryAPI::query
函数的参数可能无效(https://github.com/tomusdrw/rust-web3/issues/383)
获取失败
这可能是一个服务器端错误。请在终端中检查错误消息以获取更多信息。
许可证
根据MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)授权
依赖关系
~27–43MB
~783K SLoC