文档首页/ 函数工作流 FunctionGraph/ 最佳实践/ 使用Go构建FunctionGraph HTTP函数
更新时间: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"。

编译打包

  1. linux机器下,将上述代码编译 go build -o go-http-demo main.go。然后,将go-http-demo和bootstrap打包为xxx.zip。
  2. 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 请求结果