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

简介: 二维码可以说已经深深的融入了我们的生活当中,到处可见它的身影;但通常我们都是去扫二维码,以前我们分享给朋友一个网址直接把Url发过去,现在我们可以把自己的信息生成二维码再分享给他人。这里就分享一下基于Go语言+Google图表API提供二维码生成功能的小应用,并演示如何把它发布到云平台上,让每个人都可以通过网络访问使用它。

二维码可以说已经深深的融入了我们的生活当中,到处可见它的身影;但通常我们都是去扫二维码,

以前我们分享给朋友一个网址直接把Url发过去,现在我们可以把自己的信息生成二维码再分享给他人。

这里就分享一下基于Go语言+Google图表API提供二维码生成功能的小应用,并演示如何把它发布到云平台上,

让每个人都可以通过网络访问使用它。

Google图表API

Google在http://chart.apis.google.com 上提供了一个将表单数据自动转换为图表的服务。

不过,该服务很难交互, 因为你需要将数据作为查询放到URL中。

此程序为一种数据格式提供了更好的的接口: 给定一小段文本,

它将调用图表服务器来生成二维码(QR码),这是一种编码文本的点格矩阵。

该图像可被你的手机摄像头捕获,并解释为一个字符串,比如URL, 

这样就免去了你在狭小的手机键盘上键入URL的麻烦。

应用效果

在文本框中输入一个URL,如(http://blog.csdn.net/testcs_dn),点击Show QR,会生成一张二维码的图片


构建一个类似的应用程序的前提条件

一个 Bluemix 帐户,您还没有? 点击这里注册,已经有,点击这里登录

对 HTML、CSS 、JavaScript 和Go语言的基本了解。我提供了所有必要代码,但对这些技术的基本了解有助于您理解有关的细节。


步骤 1. 创建您的 GO 应用程序

  1. 1、在 Bluemix 用户界面中,转至“仪表板”。

  2. 2、单击创建应用程序

  3. 3、单击 Web,然后按照指导经验来选择入门模板,指定名称以及选择编码方式。

  4. 输入应用程序名称

  5. 应用程序名称是唯一的,接下来要通过它做为二级域名来访问你的应用!
  6. 点击完成之后,需要等待一会儿,然后可以看到下图的界面

    1. 这时就可以访问你刚刚创建的应用了。如下图:

步骤 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 之前的代码应该比较容易理解。我们通过一个常量为服务器设置了默认端口。 模板变量 templ 正式有趣的地方。它构建的HTML模版将会被服务器执行并显示在页面中。 稍后我们将详细讨论。

main 函数解析了参数标志并使用我们讨论过的机制将 helloworld 函数绑定到服务器的根路径。然后调用 http.ListenAndServe 启动服务器;它将在服务器运行时处于阻塞状态。

helloworld 仅接受包含表单数据的请求,并为表单值 s 中的数据执行模板。

模板包 html/template 非常强大;该程序只是浅尝辄止。 本质上,它通过在运行时将数据项中提取的元素(在这里是表单值)传给 templ.Execute 执行因而重写了HTML文本。 在模板文本(templateStr)中,双大括号界定的文本表示模板的动作。 从 {{if .}} 到 {{end}} 的代码段仅在当前数据项(这里是点 .)的值非空时才会执行。 也就是说,当字符串为空时,此部分模板段会被忽略。

其中两段 {{.}} 表示要将数据显示在模板中 (即将查询字符串显示在Web页面上)。HTML模板包将自动对文本进行转义, 因此文本的显示是安全的。

余下的模板字符串只是页面加载时将要显示的HTML。如果这段解释你无法理解,请参考 文档 获得更多有关模板包的解释。

你终于如愿以偿了:以几行代码实现的,包含一些数据驱动的HTML文本的Web服务器。 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 命令行界面。

    下载 Cloud Foundry 命令行界面


  2. 请根据自己使用的操作系统下载对应的版本;我使用的是Windows 7 64位操作系统,
  3. 下载Binaries版本的不需要安装,直接解压到Windows目录就可以了

  4. 以下执行的命令你可以通过访问 https://www.ng.bluemix.net/docs/#starters/upload_app.html#upload_app__push
  5. 查看属于自己的命令;
  6. 2、连接到 Bluemix
  7. 打开命令提示符窗口:开始》运行,输入“cmd”,回车
  8. 执行:cf api https://api.ng.bluemix.net,如下图:

  9. 3、登录到 Bluemix
  10. 注意,这里要换成对应你自己账户的命令!
  11.     
        
    cf login -u ivu4e@qq.com -o ivu4e@qq.com -s ivu4e

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

  1. 从应用程序目录中,输入带有应用程序名称的 cf push 命令。在 Bluemix 环境中,应用程序名称必须是唯一的。
  2. 后面的"-m 512m"是修改应用程序内存配额的,可以不带这个参数,如下图:

  3. 注意:执行cf push前将命令行当前目录切换到您刚刚创建的应用目录,例如我刚刚创建的C:\Go\src\web1,cf push 后面的goinfo要替换为您在Bluemix上创建的应用名称。
  4. 提示: 使用 cf push 命令时,cf 命令行界面会将当前目录中的所有文件和目录复制到 Bluemix。确保应用程序目录中只包含必需的文件。
  5. cf push 命令上传应用程序并将其部署到 Bluemix。有关 cf push 的更多信息,请参阅 cf 命令。有关 buildpack 的信息,请参阅使用社区 buildpack

  6. 如果更改了应用程序,可以通过再次输入 cf push 命令来上传这些更改。 cf 命令行界面会使用您先前的选项以及您对提示的响应来通过新的代码段更新应用程序的任何运行中实例。
提示: 您还可以从  Bluemix DevOps Services 上传或部署应用程序。请参阅 在 Node.js 中使用 Web IDE 开发Bluemix 应用程序

步骤 6. 做个小小的测试

通过仪表板进入您刚刚创建的应用页面,点击左侧的开始编码,右侧顶部会显示:您的应用程序正在运行。 http://goqrcode.mybluemix.net

点击后面的链接访问刚刚发布的应用。


在输入框中输入您想分享的URL,点击Show QR按钮就可以生成二维码图片了。

结束语

通过IBM的Bluemix云平台,我们可以轻松的将自己的应用共享到网络上;

创建Web应用之后会自动获得一个用来访问应用的二级域名;

通过应用程序概述中的应用程序运行状况,可以方便的查看和管理应用运行状态;

这里通过一个小例子展示如何将自己的应用发布到IBM的Bluemix云平台上,

如何与Google在http://chart.apis.google.com 上提供了的图表服务交互。

如果您有更好的应用或想法,试试通过IBM的Bluemix云平台共享出来吧。


目录
相关文章
|
11天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
12天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
1月前
|
Cloud Native Go API
Go语言在微服务架构中的创新应用与实践
本文深入探讨了Go语言在构建高效、可扩展的微服务架构中的应用。Go语言以其轻量级协程(goroutine)和强大的并发处理能力,成为微服务开发的首选语言之一。通过实际案例分析,本文展示了如何利用Go语言的特性优化微服务的设计与实现,提高系统的响应速度和稳定性。文章还讨论了Go语言在微服务生态中的角色,以及面临的挑战和未来发展趋势。
|
1月前
|
运维 Go 开发者
Go语言在微服务架构中的应用与优势
本文深入探讨了Go语言在构建微服务架构中的独特优势和实际应用。通过分析Go语言的核心特性,如简洁的语法、高效的并发处理能力以及强大的标准库支持,我们揭示了为何Go成为开发高性能微服务的首选语言。文章还详细介绍了Go语言在微服务架构中的几个关键应用场景,包括服务间通信、容器化部署和自动化运维等,旨在为读者提供实用的技术指导和启发。
|
1月前
|
负载均衡 Go API
探索Go语言在微服务架构中的应用与优势
在这篇技术性文章中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构时的独特优势。文章将通过对比分析Go语言与其他主流编程语言,展示Go在并发处理、性能优化、以及开发效率上的优势。同时,我们将通过一个实际的微服务案例,详细说明如何利用Go语言构建高效、可扩展的微服务系统。
|
1月前
|
中间件 Go API
使用Go语言构建高性能RESTful API
在现代软件开发中,RESTful API因其简洁和高效而成为构建网络服务的首选。Go语言以其并发处理能力和高性能著称,是开发RESTful API的理想选择。本文将介绍如何使用Go语言构建RESTful API,包括基础的路由设置、中间件的使用、数据验证、错误处理以及性能优化。通过实际代码示例,我们将展示Go语言在API开发中的强大功能和灵活性。
|
1月前
|
安全 Go 云计算
探索Go语言在微服务架构中的应用与优势
在本文中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构中的独特优势。文章将分析Go语言的并发模型、简洁的语法以及高效的编译速度,以及这些特性如何使其成为微服务架构的理想选择。我们将通过一个简单的微服务示例,展示Go语言在实际开发中的表现,并讨论其在性能和可维护性方面的优势。
|
18天前
|
NoSQL 测试技术 Go
自动化测试在 Go 开源库中的应用与实践
本文介绍了 Go 语言的自动化测试及其在 `go mongox` 库中的实践。Go 语言通过 `testing` 库和 `go test` 命令提供了简洁高效的测试框架,支持单元测试、集成测试和基准测试。`go mongox` 库通过单元测试和集成测试确保与 MongoDB 交互的正确性和稳定性,使用 Docker Compose 快速搭建测试环境。文章还探讨了表驱动测试、覆盖率检查和 Mock 工具的使用,强调了自动化测试在开源库中的重要性。
|
2月前
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
解密Google Cloud 全新 PaLM2及创新应用
这篇文章深入解析了Google Cloud推出的PaLM2大语言模型的特点及其在不同行业中的创新应用。

热门文章

最新文章

下一篇
无影云桌面