有奖捉虫:行业应用 & 管理与支持文档专题 HOT
本文以 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 function

import (
"fmt"
"net/http"

handler "github.com/openfaas/templates-sdk/go-http"
)

// Handle a function invocation
func Handle(req handler.Request) (handler.Response, error) {
var err error

message := fmt.Sprintf("Body: %s", string(req.Body))

return handler.Response{
Body: []byte(message),
StatusCode: http.StatusOK,
}, err
}
我们通过修改方法内容,让这个方法实现倒序返回请求 body 的内容。修改完成后保存并退出。
package function

import (
"net/http"

handler "github.com/openfaas/templates-sdk/go-http"
)

// Handle a function invocation
func 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)-1
for ; 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 应用就创建完毕了!