更新时间:2025-04-24 GMT+08:00
开发HTTP函数
本章节介绍使用Go运行时开发HTTP函数,更多HTTP详情,请参见创建HTTP函数。
约束与限制
- HTTP函数只能绑定APIG/APIC触发器,根据函数和APIG/APIC之间的转发协议。
函数的返回合法的http响应报文中必须包含body(String)、statusCode(int)、headers(Map)和isBase64Encoded(boolean),HTTP函数会默认对返回结果做Base64编码,isBase64Encoded默认为true,其它框架同理。相关约束条件请参考Base64解码和返回结构体的说明。
- HTTP函数默认开放端口为8000。
- Context类中提供了许多上下文方法供用户使用,其声明和功能请参见表1。
使用Go开发HTTP函数示例
示例概述:
由于HTTP函数本身不支持Go语言直接代码部署,因此本示例将以转换成二进制的方式为例,将Go编写的程序部署到FunctionGraph上。
操作步骤:
具体操作步骤请参见使用Go构建FunctionGraph HTTP函数。
代码示例
源文件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。
创建HTTP函数
在FunctionGraph函数工作流中新建一个HTTP函数,然后上传刚才打包的xxx.zip代码。
父主题: Go