使用七牛构建一个通用的二维码API

前言

二维码你们都不陌生,在不少项目的开发过程当中也会接触到二维码的生成需求,虽然有不少各语言生成二维码的实现方案,不过与之相比,最简单快捷的方式是直接将内容拼接成一个URL用于展现二维码图片便可。php

市面上也有不少的免费的二维码API可用,好比这个 或者 这个html

遇到了点问题

前两天我这儿的一个项目就遇到了个问题,一直在用的api.qrserver.com挂了(如今已经又正常了),对应的二维码图片所有都不能展现,虽然马上改了代码换成了qr.topscan.com,这也为笔者敲了个警钟,看看可否再备几个二维码实现方案呢。git

七牛也有二维码API

在整理资料的时候,发现七牛家也提供了一个二维码API(连接),仔细研读发现这是用于七牛存储空间资源的二维码下载方式。github

笨办法

若是先将目标文本存到七牛,再用这个API生成二维码,这个笨办法好像也还行。api

难道我想要配一个二维码还得调七牛接口先存一个文件上去?这也太麻烦了吧。编码

虽然这样作也能作,封装成接口后也能够一劳永逸,但我就是以为,仍是麻烦啊。url

能够取巧

我曾经在作 php-blog 的时候用过七牛的一个镜像功能(连接在这里)。spa

简单的说,访问七牛空间的地址若是资源不存在,七牛就会尝试访问对应的镜像地址获取资源。code

因此,问题就简单了。cdn

访问七牛地址(带二维码API)->七牛访问镜像获取资源->七牛保存资源并转化成二维码输出

操做实例

  • 首先咱们建立一个专用的七牛存储空间。

  • 而后给这个空间绑定一个固定域名,并配置好cname.

  • 给这个空间设置一个镜像地址,好比 https://wanyaxing.com/qrcode?text=

  • 这时候cname应该也生效了。

  • 那么访问http://qrcode.wanyaxing.com/helloworld 应该就等于访问 https://wanyaxing.com/qrcode?text=/helloworld
  • 因此咱们须要写点代码让https://wanyaxing.com/qrcode?text=/helloworld出打印helloworld便可。
<?php
if (isset($_GET['text'])) {
    $text = $_GET['text'];
    if (substr($text, 0, 1) =='/') {
        $text = substr($text,1);
    }
    echo $text;
} else {
    echo 'no text found';
}
复制代码

后语

写到最后发现本身也等于开发了一个二维码API了呢, http://qrcode.wanyaxing.com/helloworld?qrcode/1,将其中的 helloworld 改为任意文字便可使用,(注:汉字的话须要编码一下,好比urlencode/encodeURIComponent等)

固然,你们也能够顺着这个思路继续改造,好比文字+自定义签名的方式来实现防盗用功能,此处就不做展开啦。

原文来自阿星的博客: wanyaxing.com/blog/201907…

相关文章
相关标签/搜索