前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go-RESTful-创建RESTful API服务(三)

Go-RESTful-创建RESTful API服务(三)

原创
作者头像
堕落飞鸟
发布2023-04-25 13:53:31
3090
发布2023-04-25 13:53:31
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

下面是一个完整的示例,展示如何使用Go-RESTful框架创建一个简单的RESTful API服务。这个示例提供了两个路由:GET /users和POST /users,分别用于获取用户列表和创建一个新用户。用户信息以JSON格式返回给客户端。

代码语言:javascript
复制
package main

import (
    "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服务器。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Serverless HTTP 服务
Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档