
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Star Wars API 是一个受 swapi.dev 启发的GraphQL API,旨在解决原API中嵌套数据获取缓慢的问题。它将星球大战相关数据整合为GraphQL接口,提供更高效的数据查询能力,适用于需要快速获取星球大战各类资产信息的应用开发。
TypeScript类型定义:提供客户端TypeScript类型,发布于:
私有部署支持:提供Docker镜像,可用于私有部署,发布于:
资产信息覆盖:提供星球大战中多种资产的详细信息,包括:
注意:仅在使用TypeScript或GraphQL schema验证时需要安装此包。包中不包含实际API,仅提供类型信息。
使用以下命令安装TypeScript类型包(可替换为其他包管理器):
shnpm install -D @skyra/star-wars-api
已部署版本的完整文档可查看 API的GraphQL Playground。
以下示例基于TypeScript,JavaScript用户可将导入改为require语法并移除类型信息。
使用Docker Run
sh# 从Dockerhub拉取并运行镜像 docker run -d -p 4000:4000 --name star-wars-api docker.xuanyuan.run/skyrabot/star-wars-api # 或从GitHub Package Registry拉取 docker run -d -p 4000:4000 --name star-wars-api ***-ghcr.xuanyuan.run/skyrabot/star-wars-api:latest
服务启动后,可通过 http://localhost:4000 访问GraphQL Playground。
tsimport type { Query } from '@skyra/star-wars-api'; interface StarWarsGraphqlApiResponse<K extends keyof Omit<Query, '__typename'>> { data: Record<K, Omit<Query[K], '__typename'>>; } fetch('https://swapi.skyra.pw/', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query: ` { getPerson(person: lukeskywalker) { name birthYear eyeColors gender } } ` }) }) .then((res) => res.json() as Promise<StarWarsGraphqlApiResponse<'getPerson'>>) .then((json) => console.log(json.data)); // 输出卢克·天行者的信息
tsimport type { Query, QueryGetPersonFuzzyArgs } from '@skyra/star-wars-api'; import ApolloClient from 'apollo-boost'; import fetch from 'cross-fetch'; import gql from 'graphql-tag'; type StarWarsGraphqlApiResponse<K extends keyof Omit<Query, '__typename'>> = Record<K, Omit<Query[K], '__typename'>>; // 定义查询 const getPersonFuzzy = gql` query getPerson($person: String!) { getFuzzyPerson(person: $person, take: 10) { name birthYear eyeColors gender } } `; // 创建Apollo客户端 const apolloClient = new ApolloClient({ uri: 'https://swapi.skyra.pw/', fetch }); // 执行查询 const { data: { getPersonFuzzy: peopleData } } = await apolloClient.query<StarWarsGraphqlApiResponse<'getPersonFuzzy'>, QueryGetPersonFuzzyArgs>({ query: getPersonFuzzy, variables: { person: 'luke' } // 模糊查询名字包含"luke"的人物 }); console.log(peopleData); // 输出匹配的人物列表
Apollo Client配置
ts// ApolloClient setup import { ApolloClient } from 'apollo-client'; import { InMemoryCache } from 'apollo-cache-inmemory'; import { HttpLink } from 'apollo-link-http'; // 创建缓存和链接 const cache = new InMemoryCache(); const link = new HttpLink({ uri: 'https://swapi.skyra.pw/' // API地址 }); // 导出客户端实例 export const client = new ApolloClient({ cache: cache, link: link, name: 'graphql-star-wars-api-client', version: '1.0', queryDeduplication: false, defaultOptions: { watchQuery: { fetchPolicy: 'cache-and-network' } } });
React组件使用
tsx// Component import React from 'react'; import gql from 'graphql-tag'; import { useQuery } from '@apollo/react-hooks'; import type { Query } from '@skyra/star-wars-api'; import { client } from './ApolloClient'; interface StarWarsGraphqlApiResponse<K extends keyof Omit<Query, '__typename'>> { data: Record<K, Omit<Query[K], '__typename'>>; } // 定义查询 const GET_PERSON_DATA = gql` { getPerson(person: lukeskywalker) { name birthYear eyeColors gender } } `; // React组件 export const StarWarsPerson: React.FC = () => { const { loading, error, data } = useQuery<StarWarsGraphqlApiResponse<'getPerson'>>(GET_PERSON_DATA, { client: client }); if (loading) return <div>Loading...</div>; if (error) return <div>Error! {error.message}</div>; return ( <div> <h2>{data?.getPerson.name}</h2> <p>出生年份: {data?.getPerson.birthYear}</p> <p>眼睛颜色: {data?.getPerson.eyeColors.join(', ')}</p> <p>性别: {data?.getPerson.gender}</p> </div> ); };
本项目基于 https://github.com/skyra-project/star-wars-api/blob/main/LICENSE.md 开源。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务