![visitor badge](https://badge.keke.cc/api/github.com/example)
⬆️ 一个简单的访客记录
GitHub上已经有很多Visitor Badge了,大部分的样式是一个黑色的Badge,我不喜欢,所以写了一个自己想要的样式。如果你也有类似的需求,欢迎你fork并部署一份自己的Visitor Badge。
链接格式为
https://example.com/api/:namespace/:key
其中namespace
和key
为自定义部分,example.com
为你的域名。namespace
+ key
共同标志一个唯一的Badge。有15秒的缓存,即15秒内的重复访问不会重复计数。
namespace最好设置为你当前使用环境的域名,key可以任意设置。
实际上namespace会根据跳转Request Header的referer字段判断,如果当前请求没有referer的话,namespace随便设什么都可以。如果有referer字段的话,则必须按照下面例子设置(即referer的hostname匹配)。这一部分的代码在index.ts中。比如:
www.abc.com -> https://example.com/api/abc.com/key
abc.com -> https://example.com/api/abc.com/key
sub.abc.com -> https://example.com/api/sub.abc.com/key
Note
部署之前你需要先准备一个自己的MongoDB云数据库。我目前用的是Mongodb Atlas,你也可以选择其他的,比如Railway。
点击按钮即可部署
以上环境变量参考.env.example中的定义。
Node v18及以上
如果你已经安装了pnpm,可以略过这两步
corepack enable
corepack prepare pnpm@latest --activate
pnpm install
根目录下添加.env文件(参考.env.example中的定义)
pnpm dev
访问 localhost:3000/api/test/a
即可看到效果
会在commit时自动执行打包命令,你也可以手动运行pnpm build
打包。
很大概率你需要改动这些文件以适应自己的需求。
api/index.ts 包含路由,namespace + key的合法性验证。
assets svg头像。
database 数据库部分。
utils/avatar.ts svg头像渲染字符串。
utils/cache.ts 缓存时间设置。
utils/renderSVG.ts 渲染Badge。
utils/load-config.ts .env文件处理。
Deploy Node API (Express Typescript) on Vercel