【go语言】4.1.3 构建 RESTful API

84 阅读1分钟

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 的基本步骤。你可以根据需要添加更多的功能,如修改和删除书籍,处理错误,验证输入等。 推荐阅读:

mp.weixin.qq.com/s/dV2JzXfgj…

mp.weixin.qq.com/s/an83QZOWX…

file