更新时间:2024-08-21 GMT+08:00
使用Go构建FunctionGraph HTTP函数
方案概述
本章节主要指导使用Go语言开发应用的用户,将业务部署到FunctionGraph。
由于HTTP函数本身不支持Go语言直接代码部署,因此本章节将以转换成二进制的方式为例,将Go编写的程序部署到FunctionGraph上。
操作流程
构建代码包
创建源文件main.go,代码如下:
// main.go package main import ( "fmt" "net/http" "github.com/emicklei/go-restful" ) func registerServer() { fmt.Println("Running a Go Http server at localhost:8000/") ws := new(restful.WebService) ws.Path("/") ws.Route(ws.GET("/hello").To(Hello)) c := restful.DefaultContainer c.Add(ws) fmt.Println(http.ListenAndServe(":8000", c)) } func Hello(req *restful.Request, resp *restful.Response) { resp.Write([]byte("nice to meet you")) } func main() { registerServer() }
# bootstrap /opt/function/code/go-http-demo
在main.go中,使用8000端口启动了一个HTTP服务器,并注册了path为“/hello”的API,调用该API将返回"nice to meet you"。
编译打包
- 在linux机器下,将上述代码编译 go build -o go-http-demo main.go。然后,将go-http-demo和bootstrap打包为xxx.zip。
- 在windows机器下使用Golang编译器完成打包,具体步骤如下:
# 切换编译环境方式 # 查看之前的golang编译环境 go env # 设置成linux对应的 set GOARCH=amd64 go env -w GOARCH=amd64 set GOOS=linux go env -w GOOS=linux # go build -o [目标可执行程序] [源程序] # 例子 go build -o go-http-demo main.go # 还原之前的编译环境 set GOARCH=amd64 go env -w GOARCH=amd64 set GOOS=windows go env -w GOOS=windows
创建HTTP函数并上传代码
创建1个HTTP函数,并上传已打包的xxx.zip包。请参见创建HTTP函数。
创建APIG触发器
请参见使用APIG触发器,创建APIG触发器,“安全认证”建议选择“None”,方便调试。
图1 APIG触发器
调用测试
将刚才创建的APIG触发器的URL+代码中注册的“/hello”复制到浏览器地址栏,可以看到页面返回结果如下:
图2 请求结果