RESTful API 是一种构建 Web 服务的常用方式,它基于 HTTP 协议,利用 HTTP 的各种方法(如 GET、POST、PUT、DELETE)来操作资源。
在 Go 中,我们可以使用 net/http 包来构建 RESTful API。以下是一个简单的例子,我们创建一个 API 来管理 "Books":
package main
import (
"encoding/json"
"fmt"
"net/http"
)
type Book struct {
ID string `json:"id"`
Title string `json:"title"`
Author string `json:"author"`
}
var books = make(map[string]Book)
func main() {
http.HandleFunc("/books", booksHandler)
http.ListenAndServe(":8080", nil)
}
func booksHandler(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
getBooks(w, r)
case "POST":
createBook(w, r)
default:
http.Error(w, "Invalid method", 405)
}
}
func getBooks(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(books)
}
func createBook(w http.ResponseWriter, r *http.Request) {
var book Book
err := json.NewDecoder(r.Body).Decode(&book)
if err != nil {
http.Error(w, "Bad request", 400)
return
}
books[book.ID] = book
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(book)
}
在这个例子中,我们首先定义了 Book 类型,然后创建了一个 books 映射来存储书籍。
我们创建了 booksHandler 函数来处理 /books 路径的请求。在这个函数中,我们检查 HTTP 方法,如果是 "GET",我们调用 getBooks 函数来返回所有书籍;如果是 "POST",我们调用 createBook 函数来创建新的书籍。
getBooks 函数使用 json.NewEncoder 将 books 映射编码为 JSON,并写入到响应中。
createBook 函数使用 json.NewDecoder 从请求体中解码 JSON 到 Book 对象,然后将它添加到 books 映射中,并将它编码为 JSON 写入到响应中。
这就是构建 RESTful API 的基本步骤。你可以根据需要添加更多的功能,如修改和删除书籍,处理错误,验证输入等。 推荐阅读: