世界快播:Go-RESTful-创建RESTful API服务(三)

来源: 腾讯云 时间:2023-05-01 22:19:00


(资料图片)

下面是一个完整的示例,展示如何使用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服务器。

X 关闭

热门推荐

Pod重启策略

2023-05-01   腾讯云

大东区:擦亮城市 喜迎“五一”

2023-05-01   沈阳日报-沈阳网

iptables命令

2023-05-01   腾讯云

当前短讯!上好这堂劳动课

2023-05-01   人民日报

当前速看:kubelet参数

2023-05-01   腾讯云

Pod中的Prestop和postStart

2023-05-01   腾讯云

kubernetes-Deployment介绍(一)

2023-05-01   腾讯云

kubernetes启动pod的过程

2023-05-01   腾讯云

kubernetes就绪探针使用

2023-05-01   腾讯云

官方严打!今起 正式施行!

2023-05-01   券商中国

野夫简介_野夫介绍

2023-05-01   万能网

钟鼓楼:5月6日至5月31日闭馆|全球观速讯

2023-05-01   北京日报客户端

Gorm-自定义查询(一)

2023-05-01   腾讯云

2023北京国际航空航天模型邀请赛举行

2023-05-01   北京青年报官网

Deployment回滚(一)

2023-05-01   腾讯云

Deployment滚动更新|当前播报

2023-05-01   腾讯云

假日来看大熊猫-环球快播报

2023-05-01   正观新闻

Deployment滚动更新策略Recreate

2023-04-30   腾讯云

kubernetes就绪探针使用

2023-04-30   腾讯云

观热点:Deployment滚动更新

2023-04-30   腾讯云

环球资讯:坚守岗位度假期

2023-04-30   中工网

kubernetes-Deployment介绍(一)

2023-04-30   腾讯云

PHP-web框架Laravel-路由(二)

2023-04-30   腾讯云

即时焦点:“智慧城管”助力非现场执法

2023-04-30   北京青年报官网

Deployment扩容和缩容(二)

2023-04-30   腾讯云

Copyright   2015-2022 中国行业信息网版权所有  备案号:   联系邮箱:29 59 11 57 8@qq.com