首页 >后端开发 >Golang >Go 中的 Web 服务 Api 服务器

Go 中的 Web 服务 Api 服务器

PHPz
PHPz原创
2024-07-23 13:36:311215浏览

Web Service Api Server in Go

在本章中,我们将介绍 go 和 Json Web 编程,以 API 形式创建具有响应数据类型的 API Web 服务。

  1. WEB 创建 API 首先准备一些样本数据
package main
import "encoding/json"
import "net/http"
import "fmt"
type student struct {
 ID string
 Name string
 Grade int
}
var data = []student{
 student{"E001", "ethan", 21},
 student{"W001", "wick", 22},
 student{"B001", "bourne", 23},
 student{"B002", "bond", 23},
}

上面的student结构体作为示例数据切片元素类型,存储在data变量中。
接下来,创建一个 user() 函数来处理 /users 端点。在此函数中,通过 r.Method() 属性进行请求类型检测过程,以查明请求类型是 Post 还是 Get 还是其他类型。

func users(w http.ResponseWriter, r *http.Request) {
 w.Header().Set("Content-Type", "application/json")
 if r.Method == "GET" {
 var result, err = json.Marshal(data)
 if err != nil {
 http.Error(w, err.Error(), http.StatusInternalServerError)
 return
 }
 w.Write(result)
 return
 }
 http.Error(w, "", http.StatusBadRequest)
}

如果请求是 GET(检索数据),则数据以 JSON 编码
用作回应。
w.Header().Set("Content-Type", "application/json") 语句用于
确定响应类型,即 JSON。而 r.Write()
用于注册数据作为响应。
否则,如果请求无效,则使用
将响应设置为错误 http.Error() 函数。
还为 /user 端点设置一个处理程序。此端点与
之间的区别 上面的 /user 是:
/users 端点返回所有现有示例数据(数组)。
/user 端点仅返回一条数据,取自 data
基于其 ID 的样本。在此端点,客户端必须发送
还有正在查找的数据的ID信息

func user(w http.ResponseWriter, r *http.Request) {
 w.Header().Set("Content-Type", "application/json")
 if r.Method == "GET" {
 var id = r.FormValue("id")
 var result []byte
 var err error
 for _, each := range data {
 if each.ID == id {
 result, err = json.Marshal(each)
 if err != nil {
 http.Error(w, err.Error(), http.StatusInternalServerError)
 return
 }
 w.Write(result)
 return
 }
 }
 http.Error(w, "User not found", http.StatusNotFound)
 return
 }
 http.Error(w, "", http.StatusBadRequest)
}

r.FormValue() 方法用于检索从
发送的表单数据 客户端,在这种情况下,所指的数据是 ID。
通过使用该ID,可以搜索相关数据。如果有的话
作为响应返回。如果不存在则错误 400,错误请求
返回消息“未找到用户”。
最后,实现上面的两个处理程序。

func main() {
 http.HandleFunc("/users", users)
 http.HandleFunc("/user", user)
 fmt.Println("starting web server at http://localhost:8080/")
 http.ListenAndServe(":8080", nil)
}

运行程序,现在网络服务器已上线,可以使用数据了。

以上是Go 中的 Web 服务 Api 服务器的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn