仓库地址
示例
前景提要
原来的nodejs和worker版本: Random-Api 随机文件API
之所以使用go重构, 还是因为性能和并发问题. 使用go重构后, 单个处理速度一般在5微秒, 内存占用低至4M
特性
- 动态加载和缓存 CSV 文件内容
- 支持图片和视频随机分发
- 可自定义的 URL 路径配置
- Docker 支持,便于部署和扩展
- 详细的日志记录
部署方法
docker compose:
以上参数解释
BASE_URL
这个现在改了, 改成了你的部署后访问域名, 末尾不要带斜杠
OAUTH_CLIENT_ID和OAUTH_CLIENT_SECRET
这两个是登录授权用的, 需要到 https://connect.czl.net 随便一个方式登录后去新建个应用. 大概就这样:
别的都不重要, 回调地址填对了就行.
https://random-api.czl.net/api/admin/oauth/callback
把前面的域名改成你的.
然后把下面的Clinet ID和Client Secret 作为参数就行.
自己用的话, 就不要打开公开
, 这样只有自己可以登录, 别人登录不了.
如果要让朋友或者别人也可以登录, 就选择
公开
后输入别人的CZL Connect ID, 这样可以限制只有哪几个人能登录.
以上参数完成后, 直接运行就可以了.
运行配置
登录入口
页面最下方
导航
处理逻辑
逻辑是这样的:
- 设置端点, 也就是别人可以访问进来的入口. 这里可以配置是否首页可见和是否启用
- 设置数据源, 一个端点可以对应多个数据源. 目前数据源支持:
- 兰空图床API
- S3协议存储桶
- 自己手输(兼容之前的csv, 把以前的csv复制进来就行了)
- GET/POST, 可以反代一些别的随机API, JSON返回的那种
- 其他端点(比如ALL, 可以选中别的已有端点)
截图示例
新建端点配置
一个端点对应多个数据源
兰空图床API
手动输入url
已有端点
第三方API
小小api: https://xxapi.cn/ , 他的接口返回很快, 4k图片质量也很高
S3协议- B2存储桶
S3协议 - Minio
不理解的下面再留言
URL替换规则
可以针对全部接口/某个接口
, 把最终图片的url一部分给替换掉.
比如我一个数据源, 有两个接口使用. 默认数据源提供的url是 a.com/1.png
这种.
然后我第二个接口直接使用已有端点
功能复用了第一个接口, 这里我想给图片替换成b.com
这个国内CDN域名, 那么就进行替换即可.
也可以替换兰空图床的API给出的图片url, 有需要可以试试.
首页配置
用markdown写, 显示在首页的.
注意事项
- 图片url为了速度, 是存在内存的, 所以刚启动时如果兰空数据源等需要的数据比较大, 比如我一个二次元图床里面是1886张图片, 启动时需要先获取数据, 就需要稍等会儿才能用, 视图片url数量.
- GET/POST 别的接口, 是实时获取的, 如果上游接口反应慢, 我们反应也会慢些
- 首页的背景图, 是调用相对路径
/pic/all
的, 所以建议弄个这个接口, 哪怕一张图片也行. - 兰空和s3, 默认24小时更新一次, 如果你新加了文件想马上更新, 可以手动进数据源点一下同步
你可以把你的站点url贴在评论, 速度不错的可以贴在本帖顶部.
其他问题再留言
更新日志
2025-06-14
- 完全重构, 后端引入sqlite, gorm, 内存缓存等逻辑
- 前端改为nextjs
- 抛弃外部配置, 全部为可视化配置.
2025-06-15凌晨
- 升级依赖
- 优化数据预缓存
- 优化数据存储
- 优化兰空图床接口429的指数退避重试策略
2025-06-15 夜
- 新增s3协议数据源
2025-06-16
2025-06-18
- 修复 "手动同步数据源依旧从内存中获取, 不会从数据源重新抓取"的问题