广场 技术教程 设计资源 生活随笔 快讯 专题 社区 网址导航

概述

Mickey AI 图标库 API 是免费开源的一套完全基于 HTTP 的开放接口,提供图标分类查询、关键词搜索、SVG 获取等功能。无需注册、无需 API Key,直接调用即可使用。

所有接口均支持跨域(CORS),可在浏览器、小程序、Node.js 等任意环境直接调用。

基础信息

项目说明
基础地址https://blog.mickeyai.top/api/
协议HTTPS
数据格式JSON
字符编码UTF-8
请求方式GET

统一返回格式

json
{
  "code": 0,      // 0 表示成功,其他为错误码
  "msg": "",       // 错误信息(成功时为空)
  "data": { ... }   // 业务数据
}

快速开始

只需 3 步即可在项目中接入 Mickey AI 图标。

  • 确认你的项目支持 HTTP 请求(fetch、axios、curl 均可)
  • 选择下方合适的接口获取图标数据
  • 将返回的 SVG 代码或直链地址嵌入页面

在线调试

直接在浏览器地址栏输入接口地址即可调试,例如:

url
https://blog.mickeyai.top/api/?action=categories

或使用 curl 命令行调试:

bash
curl "https://blog.mickeyai.top/api/?action=search&q=home&limit=10"

接口文档

1. 获取分类列表

获取图标库所有分类及对应关键词。

http
GET /api/?action=categories

返回示例:

json
{
  "code": 0,
  "data": [
    { "id": "home", "name": "全部图标", "keywords": ["home", "menu", ...] },
    { "id": "user", "name": "用户人物", "keywords": ["user", "account", ...] }
  ]
}

2. 关键词搜索

根据关键词搜索图标,支持任意英文关键词。

参数类型必填说明
actionstring固定值 search
qstring搜索关键词,如 homearrow
limitint返回数量,默认 50,最大 500
http
GET /api/?action=search&q=home&limit=20

3. 按分类获取图标

获取指定分类下的图标列表。

参数类型必填说明
actionstring固定值 category
catstring分类 ID,如 weatheruser
limitint返回数量,默认 50,最大 500
http
GET /api/?action=category&cat=weather&limit=50

返回示例:

json
{
  "code": 0,
  "data": {
    "category": "weather",
    "name": "天气",
    "icons": ["mdi:weather-sunny", "mdi:weather-cloudy", ...]
  }
}

4. 获取 SVG 源码(JSON)

返回指定图标的 SVG 源码字符串。

参数类型必填说明
actionstring固定值 svg
prefixstring图标集前缀,如 mditabler
namestring图标名称,如 homesearch
http
GET /api/?action=svg&prefix=mdi&name=home

5. SVG 直链(可直接当图片)

加上 raw=1 参数,直接返回 SVG 图片,可作为 <img>src 使用。

html
<img src="https://blog.mickeyai.top/api/?action=svg&prefix=mdi&name=home&raw=1" width="24">

直链模式返回的是 image/svg+xml 格式,不是 JSON。适合直接嵌入图片标签,不适合 AJAX 请求。

接入示例

原生 JavaScript

javascript
// 获取分类
fetch('https://blog.mickeyai.top/api/?action=categories')
  .then(r => r.json())
  .then(res => console.log(res.data));

// 搜索图标
fetch('https://blog.mickeyai.top/api/?action=search&q=star&limit=20')
  .then(r => r.json())
  .then(res => {
    const icons = res.data.icons; // ["mdi:star", "tabler:star", ...]
  });

// 获取 SVG 插入页面
fetch('https://blog.mickeyai.top/api/?action=svg&prefix=mdi&name=home')
  .then(r => r.json())
  .then(res => {
    if (res.code === 0) {
      document.body.innerHTML += res.data.svg;
    }
  });

HTML 直接引用(SVG 直链)

html
<!-- 直接作为图片引用,无需任何库 -->
<img src="https://blog.mickeyai.top/api/?action=svg&prefix=mdi&name=account&raw=1" width="32">

<img src="https://blog.mickeyai.top/api/?action=svg&prefix=tabler&name=star&raw=1" width="24">

React

jsx
import { useState, useEffect } from 'react';

function Icon({ prefix, name, size = 24 }) {
  const [svg, setSvg] = useState('');

  useEffect(() => {
    fetch(`https://blog.mickeyai.top/api/?action=svg&prefix=${prefix}&name=${name}`)
      .then(r => r.json())
      .then(res => setSvg(res.data?.svg || ''));
  }, [prefix, name]);

  return <div dangerouslySetInnerHTML={{ __html: svg }} />;
}

// 使用
<Icon prefix="mdi" name="home" size={24} />

Vue 3

vue
<template>
  <div v-html="svgCode" :style="{ width: '24px', height: '24px' }"></div>
</template>

<script setup>
import { ref, onMounted } from 'vue';

const svgCode = ref('');

onMounted(async () => {
  const r = await fetch('https://blog.mickeyai.top/api/?action=svg&prefix=mdi&name=home');
  const d = await r.json();
  svgCode.value = d.data?.svg || '';
});
</script>

错误码

code说明处理方式
0成功正常处理 data 数据
400参数错误检查 action、cat、q 等必填参数
500服务器错误或上游请求失败稍后重试,或检查网络连接

常见问题

接口有频率限制吗?

目前无严格限制,但建议合理控制并发。频繁大量请求可能会被临时限流。

SVG 直链支持 CSS 改颜色吗?

不支持。直链返回的是静态 SVG 文件,颜色由源图标决定。如需动态变色,请使用「获取 SVG 源码」接口拿到代码后自行注入 currentColor

可以商用吗?

API 本身免费开放。但图标版权归属各自图标集(MIT / Apache 2.0 / CC BY 4.0 等),商用前请确认对应图标集的许可证。

图标名称格式是什么?

统一为 前缀:名称,例如 mdi:hometabler:search。前缀代表图标集,名称代表具体图标。

返回的图标列表可以直接用吗?

返回的 icons 数组每项是 前缀:名称 字符串,需要配合「获取 SVG 源码」接口或 Iconify 官方脚本才能渲染为实际图标。

部分内容由 AI 辅助生成,已人工校验.

思想的边界

在这里,每一篇内容都值得慢慢阅读!

欢迎登录

还没有账号?注册

欢迎注册

已有账号?登录