前言
之前写了个东西,需要使用url来传参,导致链接特别长,不利于分享。找了一些免费的短网址服务,不好用。受Valine启发,做了这个,感觉非常适合github pages使用。
原理
1、使用uuid跟长网址一一对应存数据库
注:因为自己玩数据少,就直接使用uuid了
实现
1、在 leanCloud 网站上创建一个 leanCloud 应用(如果需要绑定域名且没有备案过请选择北美)
2、本地创建项目,关联项目
// 登录账户并选择区域 lean login
  // 创建项目并关联 lean init xxx
  // 选择自己熟悉的语言环境
 
   | 
 
3、添加接口服务(以下为 node 代码)
router.get('/:id', async (ctx, next) => {   let id = ctx.request.url.replace('/', '');   if (!_.isEmpty(id)) {     const query = new LC.Query('shortUrl');     query.equalTo('uuid', id);     const res = await query.find();     if (res && res.length > 0) {       const redirectUrl = _.get(res, '0.attributes.url', '');       ctx.status = 302; // 301也可以,根据实际情况调整       ctx.redirect(redirectUrl);       ctx.body = '';     }   } });
  | 
 
4、添加转换页面
// 只贴核心代码
  const uuid = shortUUID().new();
  const LCShortUrl = LC.Object.extend('shortUrl'); const lcShortUrl = new LCShortUrl(); lcShortUrl.set('uuid', uuid); lcShortUrl.set('url', this.originUrl);
  let getAcl = () => {   let acl = new LC.ACL();   acl.setPublicReadAccess(!0);   acl.setPublicWriteAccess(!1);   return acl; };
  lcShortUrl.setACL(getAcl());
  lcShortUrl.save().then((res) => {   this.newUrl =     'https://xxx.xx/' + _.get(res, 'attributes.uuid', ''); });
   | 
 
5、部署
6、登录网页绑定域名,北美的可以使用cloudflare加速
注意:现在cloudflare国内的可能不稳定,还是推荐使用国内的DNS解析
演示地址
https://short.landandan.cn/