首页 > 其他分享 >使用Go语言实现RESTful API

使用Go语言实现RESTful API

时间:2024-01-04 14:34:44浏览次数:24  
标签:http 请求 err 用户 json API Go RESTful 处理函数


RESTful架构是一种设计风格,用于构建网络应用程序的API。它基于HTTP协议,并使用不同的HTTP方法(如GET、POST、PUT、DELETE等)来处理不同的操作。在Go语言中,我们可以使用标准库中的net/http包来实现RESTful API。

下面是一个简单的示例,演示如何使用Go语言实现一个基本的RESTful API:

go复制代码


package main




import (


"encoding/json" 


"log" 


"net/http" 


)




// 定义一个结构体来表示资源


type User struct {


ID int `json:"id"` 


Name string `json:"name"` 


Age int `json:"age"` 


}




// 定义一个处理GET请求的处理函数


func getHandler(w http.ResponseWriter, r *http.Request) {


// 从数据库或其他数据源获取用户数据


user := User{ID: 1, Name: "John", Age: 30}




// 将用户数据转换为JSON格式


userJSON, err := json.Marshal(user)


if err != nil {


http.Error(w, "Internal Server Error", http.StatusInternalServerError)


return 


}




// 将JSON数据写入响应中


w.Header().Set("Content-Type", "application/json")


w.WriteHeader(http.StatusOK)


w.Write(userJSON)


}




// 定义一个处理POST请求的处理函数


func postHandler(w http.ResponseWriter, r *http.Request) {


// 解析请求体中的JSON数据


var user User


err := json.NewDecoder(r.Body).Decode(&user)


if err != nil {


http.Error(w, "Bad Request", http.StatusBadRequest)


return 


}




// 处理创建用户的逻辑(例如,将用户数据保存到数据库)




// 返回成功响应


w.WriteHeader(http.StatusCreated)


w.Write([]byte("User created successfully"))


}




func main() {


// 注册处理函数并指定路由模式和对应的HTTP方法


http.HandleFunc("/users", getHandler).Methods("GET") // 用于获取用户数据


http.HandleFunc("/users", postHandler).Methods("POST") // 用于创建用户数据


http.HandleFunc("/users/:id", getHandler).Methods("GET") // 用于获取指定ID的用户数据(PUT和DELETE请求也可以使用这个路由)


http.HandleFunc("/users/:id", putHandler).Methods("PUT") // 用于更新指定ID的用户数据(DELETE请求也可以使用这个路由)


http.HandleFunc("/users/:id", deleteHandler).Methods("DELETE") // 用于删除指定ID的用户数据




// 启动服务器并监听端口8080(你可以根据需要更改端口号)


err := http.ListenAndServe(":8080", nil)


if err != nil {


log.Fatal("Server error:", err)


}


}

在上述示例中,我们定义了四个处理函数来处理不同的HTTP请求。getHandler函数用于处理GET请求,postHandler函数用于处理POST请求,putHandler和deleteHandler函数则分别用于处理PUT和DELETE请求。这些处理函数根据不同的路由模式来处理相应的操作。最后,我们使用http.ListenAndServe函数启动了一个Web服务器,并监听端口8080。


标签:http,请求,err,用户,json,API,Go,RESTful,处理函数
From: https://blog.51cto.com/u_15822686/9100895

相关文章

  • 安装APISIX服务
    1、先安装依赖服务#安装epel,luarocks需要它wgethttp://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm-ivhepel-release-latest-7.noarch.rpm#添加OpenResty源yuminstallyum-utilsyum-config-manager--add-repo\https://openresty.org/packag......
  • Python实现post请求虾皮shopee商品列表API
    Shopee平台商品列表数据接口是一种用于获取Shopee平台上商品列表信息的API接口。通过调用该接口,用户可以获取到商品的基本信息,如商品ID、商品名称、商品价格等。以下是一个示例的Shopee平台商品列表数据接口的请求和返回示例:Shopee.item_search-获取虾皮商品列表数据接口返回值说明......
  • 2023-12-27:用go语言,店铺数量n,编号1~n, 人的数量m,编号1~m, 每个人有自己投票的店铺p,和改
    2023-12-27:用go语言,店铺数量n,编号1~n,人的数量m,编号1~m,每个人有自己投票的店铺p,和改投1号店的报价x。返回想让1号店铺成为人气最高的店,至少花多少钱?1<=p,n,m<=3000,1<=x<=10^9。1号店铺贿赂问题。来自华为OD。答案2023-12-27:灵捷3.5大体步骤如下:minCost1算法步骤:1.统计每个店......
  • 2023-12-23:用go语言,一支n个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河 敌军在T
    2023-12-23:用go语言,一支n个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河敌军在T的时长后到达河面,没到过对岸的士兵都会被消灭现在军队只找到了1只小船,这船最多能同时坐上2个士兵。当1个士兵划船过河,用时为a[i]当2个士兵坐船同时划船过河时,用时为max(a[j],a[i])两士兵中用时最......
  • Mongo Express web浏览器直观界面 管理和操作MongoDB数据库
    MongoExpress是一个基于Web的MongoDB管理员界面工具,使用Node.js和express编写。它提供了一个直观的界面,帮助用户轻松管理和操作MongoDB数据库MongoExpress是一个基于Web的MongoDB管理员界面工具,使用Node.js和express编写。它提供了一个直观的界面,帮助用户轻松管理和操作MongoDB......
  • 深入分析 Java、Kotlin、Go 的线程和协程
    文章目录前言协程是什么协程的好处进程进程是什么进程组成进程特征线程线程是什么线程组成任务调度进程与线程的区别线程的实现模型一对一模型多对一模型多对多模型线程的“并发”协程协程的目的协程的特点协程的原理Java、Kotlin、Go的线程与协程Kotlin的协程使用「线程」的代......
  • Mongo 数据库备份和恢复命令
    转载请注明出处:在MongoDB中,使用mongodump和mongorestore命令来备份和恢复数据库mongodump1.使用方法:使用 mongodump 命令可以备份MongoDB数据库的数据。2.常用参数:使用mongodump--help查看所有帮忙参数,以下为常用的一些参数:-h,--host:代表远程连接的数据库地址,默认连接......
  • go依赖的版本管理
    在Go语言的项目中,要将依赖升级到最新版本,你可以使用goget命令。以下是一些常用的步骤和命令:更新单个依赖到最新版本:goget-upackage-name这里package-name是你想要更新的依赖包名。这个命令会将指定的依赖更新到最新版本。更新所有依赖到最新版本:goget-u./...这个命......
  • python使用Gemini API
    谷歌免费开放了Gemini(https://ai.google.dev)的API,每分钟可发出60个请求(RPM)。这样我们除了免费体验Bard:https://bard.google.com/外,还可以写程序来调用。安装依赖pipinstall-q-Ugoogle-generativeai-q或--quiet:这个参数用于减少安装过程中输出的信息量。通常,pipinstall......
  • 【Azure APIM】APIM 策略语句如何读取请求头中所携带的Cookie信息并保存为变量
    问题描述需要在APIM策略中对请求所携带的Cookie中的token值进行JWT验证,如果获取Cookie中的值并且作为变量保存,然后在JWT验证中使用呢? 问题解答第一步:获取Cookie中的Token值使用C#语句@(context.Request.Headers.GetValueOrDefault("cookie","").Split(';').Select(x=>x.Trim(......