本文以 golang-http 为例,快速构建一个属于自己的应用吧。
1、购买Lightwings镜像
我们在 Lightwings 控制台上购买我们 Lightwings 应用镜像,创建一台实例。
2、下载代码模板
点击新增应用,选择下载 golang-http 模板下载。
3、编写业务代码
下载完 golang-http 模板后,解压下载后的代码 zip 文件,文件目录结构如下:
golang-http├── Dockerfile├── function # 只需修改此处的代码│ ├── go.mod│ ├── go.sum│ └── handler.go #入口方法 func Handle(req handler.Request) (handler.Response, error)├── go.mod├── go.sum├── main.go├── modules-cleanup.sh└── template.yml
golang-http 模板使用的 golang 版本为1.18,通过 go mod 进行包管理。我们用本地 IDE 打开项目文件夹,应用入口为 function/handler.go 下的 handle 方法。我们查看该文件,默认的内容是返回请求的 body 中的内容:
package functionimport ("fmt""net/http"handler "github.com/openfaas/templates-sdk/go-http")// Handle a function invocationfunc Handle(req handler.Request) (handler.Response, error) {var err errormessage := fmt.Sprintf("Body: %s", string(req.Body))return handler.Response{Body: []byte(message),StatusCode: http.StatusOK,}, err}
我们通过修改方法内容,让这个方法实现倒序返回请求 body 的内容。修改完成后保存并退出。
package functionimport ("net/http"handler "github.com/openfaas/templates-sdk/go-http")// Handle a function invocationfunc Handle(req handler.Request) (handler.Response, error) {return handler.Response{Body: []byte(reverse(string(req.Body))),StatusCode: http.StatusOK,}, nil}func reverse(s string) string {runes := []rune(s)p1, p2 := 0, len(runes)-1for ; p1 < p2; p1, p2 = p1+1, p2-1 {runes[p1], runes[p2] = runes[p2], runes[p1]}return string(runes)}
4、打包代码文件
所有的业务代码都在代码模板文件夹下的function目录中,我们将编写后的 function 文件夹打包成.zip 压缩文件。
5、在控制台上传代码
继续新增应用,并选择 golang-http 模板(注意:选择模板务必与业务代码语言保持一致),进入下一步。
输入应用相关信息,文件选择刚刚打包的.zip 格式的文件,应用访问地址代表应用部署后可通过该地址进行访问。
6、调试应用
等待应用创建完成后,选择应用下的第一个版本,点击调试按钮进行在线调试。
7、部署应用
当我们应用调试通过后,就可以通过点击应用下的第一个版本的部署按钮。将应用部署到 Lightwings 镜像中。等待部署完成后就可以通过应用访问地址对应用进行访问了。
至此,您的第一个 Lightwings 应用就创建完毕了!