在雲平臺上基於Go語言+Google圖表API提供二維碼生成應用
二維碼能夠說已經深深的融入了我們的生活其中。到處可見它的身影;但通常我們都是去掃二維碼,
曾經我們分享給朋友一個網址直接把Url發過去,如今我們能夠把自己的信息生成二維碼再分享給他人。
這裏就分享一下基於Go語言+Google圖表API提供二維碼生成功能的小應用,並演示怎樣把它公布到雲平臺上,
讓每一個人都能夠通過網絡訪問使用它。
Google圖表API
Google在http://chart.apis.google.com 上提供了一個將表單數據自己主動轉換為圖表的服務。
只是,該服務非常難交互, 由於你須要將數據作為查詢放到URL中。
此程序為一種數據格式提供了更好的的接口: 給定一小段文本。
它將調用圖表server來生成二維碼(QR碼)。這是一種編碼文本的點格矩陣。
該圖像可被你的手機攝像頭捕獲。並解釋為一個字符串,比方URL,
這樣就免去了你在狹小的手機鍵盤上鍵入URL的麻煩。
應用效果
在文本框中輸入一個URL,如(http://blog.csdn.net/testcs_dn)。點擊Show QR,會生成一張二維碼的圖片
構建一個相似的應用程序的前提條件
一個 Bluemix 帳戶。您還沒有? 點擊這裏註冊。已經有,點擊這裏登錄。對 HTML、CSS 、JavaScript 和Go語言的基本了解。
我提供了全部必要代碼,但對這些技術的基本了解有助於您理解有關的細節。
步驟 1. 創建您的 GO 應用程序
- 1、在 Bluemix 用戶界面中,轉至“儀表板”。
- 2、單擊創建應用程序
- 3、單擊 Web,然後依照指導經驗來選擇入門模板。指定名稱以及選擇編碼方式。
- 輸入應用程序名稱
- 應用程序名稱是唯一的,接下來要通過它做為二級域名來訪問你的應用!
- 點擊完畢之後,須要等待一會兒,然後能夠看到下圖的界面
- 這時就能夠訪問你剛剛創建的應用了。例如以下圖:
步驟 2. 準備開發環境
假設您沒還有Go語言的本地執行環境,該過程請參考:《Go語言入門》怎樣在Windows下安裝Go語言編程環境
步驟 3.編寫代碼
1、下載初始Hello World演示樣例代碼
進入您的應用程序,點擊左側的開始編碼,在右側點擊“下載起動器代碼”。
2、創建本地應用
在Go的$GOROOT或$GOPATH文件夾下創建一個文件夾。將下載後的起動器代碼解壓到剛創建的文件夾下,
比如我的是: C:\Go\src\web1
打開文件夾下的app.go文件。將文件的內容替換為以下的代碼:
package main import ( "log" "net/http" "os" "html/template" //for extracting service credentials from VCAP_SERVICES //"github.com/cloudfoundry-community/go-cfenv" ) const ( DEFAULT_PORT = "8080" ) var templ = template.Must(template.New("qr").Parse(templateStr)) func main() { var port string if port = os.Getenv("PORT"); len(port) == 0 { port = DEFAULT_PORT } http.HandleFunc("/", helloworld) log.Printf("Starting app on port %+v\n", port) http.ListenAndServe(":"+port, nil) } func helloworld(w http.ResponseWriter, req *http.Request) { templ.Execute(w, req.FormValue("s")) } const templateStr = ` <html> <head> <title>QR Link Generator</title> </head> <body> {{if .}} <img src="http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl={{.}}" /> <br> {{.}} <br> <br> {{end}} <form action="/" name=f method="GET"><input maxLength=1024 size=70 name=s value="" title="Text to QR Encode"><input type=submit value="Show QR" name=qr> </form> </body> </html> `代碼說明
main
之前的代碼應該比較easy理解。
我們通過一個常量為server設置了默認端口。 模板變量 templ
正式有趣的地方。它構建的HTML模版將會被server執行並顯示在頁面中。
稍後我們將具體討論。
main
函數解析了參數標誌並使用我們討論過的機制將 helloworld 函數綁定到server的根路徑。然後調用 http.ListenAndServe
啟動server。它將在server執行時處於堵塞狀態。
helloworld
僅接受包括表單數據的請求,並為表單值 s
中的數據執行模板。
模板包 html/template
非常強大;該程序僅僅是淺嘗輒止。 本質上。它通過在執行時將數據項中提取的元素(在這裏是表單值)傳給 templ.Execute
執行因而重寫了HTML文本。
在模板文本(templateStr
)中,雙大括號界定的文本表示模板的動作。
從 {{if .}}
到 {{end}}
的代碼段僅在當前數據項(這裏是點 .
)的值非空時才會執行。 也就是說,當字符串為空時,此部分模板段會被忽略。
其中兩段 {{.}}
表示要將數據顯示在模板中 (即將查詢字符串顯示在Web頁面上)。HTML模板包將自己主動對文本進行轉義, 因此文本的顯示是安全的。
余下的模板字符串僅僅是頁面載入時將要顯示的HTML。假設這段解釋你無法理解,請參考 文檔 獲得很多其它有關模板包的解釋。
你最終如願以償了:以幾行代碼實現的,包括一些數據驅動的HTML文本的Webserver。 Go語言強大到能讓非常多事情以短小精悍的方式解決。
步驟 4. 本地編譯執行訪問
編譯
你能夠通過在命令行窗體執行命令:go install web1 來完畢編譯。編譯完畢後會在 C:\Go\bin 文件夾下生成web1的exe。
執行
通過上面的方法編譯後,雙擊執行就可以。
也能夠在命令行下切換到文件所在的文件夾,比如:C:\Go\src\web1
然後執行:go run app.go
這時可能會彈出Windows防火墻的安全提示,點擊同意訪問就可以。
訪問
在瀏覽器中訪問,查看效果,打開瀏覽器。輸入:http://localhost:8080/,
在文本框中輸入一個URL,如(http://blog.csdn.net/testcs_dn),點擊Show QR,會生成一張二維碼的圖片
掃一掃這張二維碼看看吧
步驟 5. 上傳應用程序
登錄到 Bluemix? 後,能夠使用 cf push 命令來上傳應用程序。
- 1、安裝 Cloud Foundry 命令行界面。
- 請依據自己使用的操作系統下載相應的版本號。我使用的是Windows 7 64位操作系統,
- 下載Binaries版本號的不須要安裝,直接解壓到Windows文件夾就能夠了。
- 以下執行的命令你能夠通過訪問 https://www.ng.bluemix.net/docs/#starters/upload_app.html#upload_app__push
- 查看屬於自己的命令。
- 2、連接到 Bluemix。
- 打開命令提示符窗體:開始》執行,輸入“cmd”,回車
- 執行:cf api https://api.ng.bluemix.net。例如以下圖:
- 3、登錄到 Bluemix。
- 註意,這裏要換成相應你自己賬戶的命令!
cf login -u [email protected] -o [email protected] -s ivu4e
4、發出 cf push 命令時,cf 命令行界面將提供使用 buildpack 來構建並執行應用程序的 Bluemix 環境的工作文件夾。
步驟 6. 做個小小的測試
通過儀表板進入您剛剛創建的應用頁面,點擊左側的開始編碼,右側頂部會顯示:您的應用程序正在執行。 http://goqrcode.mybluemix.net
點擊後面的鏈接訪問剛剛公布的應用。
在輸入框中輸入您想分享的URL。點擊Show QRbutton就能夠生成二維碼圖片了。
結束語
通過IBM的Bluemix雲平臺,我們能夠輕松的將自己的應用共享到網絡上;
創建Web應用之後會自己主動獲得一個用來訪問應用的二級域名。
通過應用程序概述中的應用程序執行狀況,能夠方便的查看和管理應用執行狀態;
這裏通過一個小樣例展示怎樣將自己的應用公布到IBM的Bluemix雲平臺上,
怎樣與Google在http://chart.apis.google.com 上提供了的圖表服務交互。
假設您有更好的應用或想法,試試通過IBM的Bluemix雲平臺共享出來吧。
在雲平臺上基於Go語言+Google圖表API提供二維碼生成應用