在云平台上基于Go语言+Google图表API提供二维码生成应用

Posted llguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在云平台上基于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. 1、在 Bluemix 用户界面中,转至“仪表板”。

  2. 技术分享
  3. 2、单击创建应用程序

  4. 技术分享
  5. 3、单击 Web,然后依照指导经验来选择入门模板。指定名称以及选择编码方式。
  6. 技术分享
  7. 输入应用程序名称
  8. 技术分享
  9. 应用程序名称是唯一的,接下来要通过它做为二级域名来訪问你的应用!
  10. 点击完毕之后,须要等待一会儿,然后能够看到下图的界面
    1. 技术分享
    2. 这时就能够訪问你刚刚创建的应用了。例如以下图:
    3. 技术分享

步骤 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. 1、安装 Cloud Foundry 命令行界面。

    技术分享

  2. 技术分享
  3. 请依据自己使用的操作系统下载相应的版本号。我使用的是Windows 7 64位操作系统,
  4. 下载Binaries版本号的不须要安装,直接解压到Windows文件夹就能够了
  5. 技术分享
  6. 以下执行的命令你能够通过訪问 https://www.ng.bluemix.net/docs/#starters/upload_app.html#upload_app__push
  7. 查看属于自己的命令。
  8. 2、连接到 Bluemix
  9. 打开命令提示符窗体:開始》执行,输入“cmd”,回车
  10. 执行:cf api https://api.ng.bluemix.net。例如以下图:
  11. 技术分享
  12. 3、登录到 Bluemix
  13. 注意,这里要换成相应你自己账户的命令!
  14. cf login -u [email protected] -o [email protected] -s ivu4e

4、发出 cf push 命令时,cf 命令行界面将提供使用 buildpack 来构建并执行应用程序的 Bluemix 环境的工作文件夹。

  1. 从应用程序文件夹中。输入带有应用程序名称的 cf push 命令。

    在 Bluemix 环境中。应用程序名称必须是唯一的。

  2. 后面的"-m 512m"是改动应用程序内存配额的,能够不带这个參数。例如以下图:
  3. 技术分享
  4. 注意:执行cf push前将命令行当前文件夹切换到您刚刚创建的应用文件夹,比如我刚刚创建的C:\Go\src\web1,cf push 后面的goinfo要替换为您在Bluemix上创建的应用名称。
  5. 提示: 使用 cf push 命令时,cf 命令行界面会将当前文件夹中的全部文件和文件夹拷贝到 Bluemix

    确保应用程序文件夹中仅仅包括必需的文件。

  6. cf push 命令上传应用程序并将其部署到 Bluemix。有关 cf push 的很多其它信息,请參阅 cf 命令

    有关 buildpack 的信息,请參阅使用社区 buildpack

  7. 假设更改了应用程序。能够通过再次输入 cf push 命令来上传这些更改。

     cf 命令行界面会使用您先前的选项以及您对提示的响应来通过新的代码段更新应用程序的不论什么执行中实例。

提示: 您还能够从 Bluemix DevOps Services 上传或部署应用程序。请參阅在 Node.js 中使用 Web IDE 开发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提供二维码生成应用的主要内容,如果未能解决你的问题,请参考以下文章

干货 | Google Go语言入门科普

Go语言和Dart语言并进,Google要一统软件开发江湖?

龙芯GO!龙芯平台上构建Go语言环境指南

Golang系列之开发环境搭建

当我们说Go语言的时候,我们在说些什么?

Go语言负责人:专属于云的编程语言!