(相关资料图)
下面是一个完整的示例,展示如何使用Go-RESTful框架创建一个简单的RESTful API服务。这个示例提供了两个路由:GET /users和POST /users,分别用于获取用户列表和创建一个新用户。用户信息以JSON格式返回给客户端。
package mainimport ( "encoding/json" "log" "net/http" "github.com/emicklei/go-restful")// 用户结构体type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"`}// 用户列表var users = []User{ {ID: 1, Name: "Alice", Email: "alice@example.com"}, {ID: 2, Name: "Bob", Email: "bob@example.com"}, {ID: 3, Name: "Charlie", Email: "charlie@example.com"},}// 获取所有用户func getUsers(request *restful.Request, response *restful.Response) { // 将用户列表转换为JSON格式,并写入HTTP响应 response.WriteEntity(users)}// 创建一个新用户func createUser(request *restful.Request, response *restful.Response) { // 从HTTP请求中读取用户信息 var user User err := request.ReadEntity(&user) if err != nil { response.WriteErrorString(http.StatusBadRequest, err.Error()) return } // 生成新的用户ID maxID := 0 for _, u := range users { if u.ID > maxID { maxID = u.ID } } user.ID = maxID + 1 // 将新用户添加到用户列表 users = append(users, user) // 返回新用户信息 response.WriteHeaderAndEntity(http.StatusCreated, user)}func main() { // 创建一个新的WebService对象 ws := new(restful.WebService) // 定义路由 ws.Route(ws.GET("/users").To(getUsers)) ws.Route(ws.POST("/users").To(createUser)) // 将WebService对象注册到RESTful框架中 restful.Add(ws) // 启动HTTP服务器 log.Fatal(http.ListenAndServe(":8080", nil))}
在这个示例中,我们定义了一个名为User的结构体,用于表示用户信息。我们还定义了一个名为users的变量,用于存储所有用户的列表。
我们编写了两个处理函数:getUsers和createUser。getUsers函数用于返回所有用户的列表,createUser函数用于创建一个新用户。这两个处理函数都遵循了Go-RESTful的处理函数签名,并使用了Request和Response对象来处理HTTP请求和响应。
我们还创建了一个新的WebService对象“ws”,并使用其Route方法来定义了两个路由,分别是GET /users和POST /users。这两个路由分别指向了不同的处理函数getUsers和createUser。
最后,我们将WebService对象注册到Go-RESTful框架中,并启动了HTTP服务器。