在k8s中启动的httpserver都使用了go-restful,简单学习下
主要有webservice router container几个概念
参考了官方的例子:https://github.com/emicklei/go-restful/blob/master/examples/restful-user-resource.go
package main
import (
"github.com/emicklei/go-restful"
"io"
"log"
"net/http"
)
func main() {
var u UserResource
container := restful.NewContainer()
u.Register(container)
//创建httpserver,监听8080,指定handler
server := &http.Server{Addr: ":8080", Handler: container}
log.Fatal(server.ListenAndServe())
}
type UserResource struct {
}
func (self UserResource) Register(container *restful.Container) {
// 创建webservice
ws := new(restful.WebService)
//指定路径以及支持的媒体类型
ws.Path("/users").
Consumes(restful.MIME_JSON, restful.MIME_XML).
Produces(restful.MIME_JSON, restful.MIME_XML)
ws.Route(ws.GET("/{user-id}").To(self.findUser))
//创建container 不创建则使用restful.Add添加到DefaultContainer
container.Add(ws)
}
func (u UserResource) findUser(request *restful.Request, response *restful.Response) {
id := request.PathParameter("user-id")
io.WriteString(response, id)
}