使用七牛構建一個通用的二維碼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…

相關文章
相關標籤/搜索