使用 Go 建立您的第一個 REST API – 讓我們開始吧!
那麼,您已經聽說過有關 Go 的熱議,對吧?它快速、簡單,基本上是當今後端開發的搖滾明星。如果您是 Go 新手或只是想用它來建造一些很酷的東西,那麼您來對地方了。本週,我們將深入研究如何使用 Go 建立您自己的 REST API,所以請係好安全帶——這將是一次有趣的旅程!
現在,到底為什麼這麼多開發者對 Go 著迷呢?好吧,想像一下:谷歌工程師厭倦了等待他們的程式編譯,決定創建一些不會讓他們想要抓狂的東西。輸入 Go——一種不僅可以完成工作,而且可以快速、輕鬆地完成工作的語言。
Go 是為當今的硬體而建構的,充分利用了多核心系統。它的秘密武器? Goroutines——這些神奇的小型並發工作者,可以毫不費力地同時處理大量任務。無論您是在建立 Web 應用程式、API 還是微服務,Go 都能讓一切順利運行,就像您一直夢想的運作良好的機器一樣。
最重要的是:Go 非常容易學。無論您是從 Python、Java 還是像 PHP 這樣「經典」的東西切換過來,在說「Hello,World!」之前,您都將開始使用 Go 進行程式設計。而且它運行快——非常快。還需要我多說嗎?
好了,閒聊夠了,讓我們動手吧。首先,我們需要建立一個簡單的 Go 專案。別擔心,我已經幫你解決了:
確保已安裝 Go。如果沒有,請在這裡獲取。
現在,讓我們建立一個專案目錄並初始化專案:
mkdir go-rest-api cd go-rest-api go mod init github.com/yourusername/go-rest-api
這就是事情變得令人興奮的地方!我們將建立一個超級簡單的 API 來管理書籍清單(因為誰不喜歡書籍?)。我們的 API 將具有以下端點:
準備好了嗎?讓我們深入研究程式碼:
package main import ( "encoding/json" "fmt" "log" "net/http" "strconv" "github.com/gorilla/mux" ) type Book struct { ID int `json:"id"` Title string `json:"title"` Author string `json:"author"` } var books []Book // Get all books func getBooks(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(books) } // Get a single book by ID func getBook(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id, err := strconv.Atoi(params["id"]) if err != nil { http.Error(w, "Invalid book ID", http.StatusBadRequest) return } for _, book := range books { if book.ID == id { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(book) return } } http.Error(w, "Book not found", http.StatusNotFound) } // Add a new book func createBook(w http.ResponseWriter, r *http.Request) { var book Book _ = json.NewDecoder(r.Body).Decode(&book) book.ID = len(books) + 1 // Assign an ID (we’re just winging it here) books = append(books, book) w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(book) } func main() { // Add some dummy data to start with books = append(books, Book{ID: 1, Title: "The Go Programming Language", Author: "Alan A. A. Donovan"}) books = append(books, Book{ID: 2, Title: "Learning Go", Author: "Jon Bodner"}) // Initialize the router r := mux.NewRouter() // Define the endpoints r.HandleFunc("/books", getBooks).Methods("GET") r.HandleFunc("/books/{id}", getBook).Methods("GET") r.HandleFunc("/books", createBook).Methods("POST") // Start the server fmt.Println("Server is running on port 8000...") log.Fatal(http.ListenAndServe(":8000", r)) }
go get -u github.com/gorilla/mux
處理程序:我們設定了 getBooks、getBook 和 createBook 函數來處理 HTTP 請求。他們使用 Go 的 net/http 套件來處理回應和資料編碼/解碼。簡單!
JSON 編碼:Go 內建的 json 套件在這裡完成繁重的工作,將我們的資料轉換為 JSON 格式,以便客戶端和 API 之間輕鬆通訊。
現在到了有趣的部分——讓我們運行這個東西!在您的終端機中,只需執行:
go run main.go
繁榮!您的 API 已啟動並正在執行。現在您可以使用Postman或curl等工具來測試它:
curl http://localhost:8000/books
curl http://localhost:8000/books/1
curl -X POST http://localhost:8000/books -d '{"title":"New Book","author":"New Author"}' -H "Content-Type: application/json"
這個小 API 只是 Go 在後端開發的冰山一角。下週,我們將透過添加身份驗證(是的,我們將採用完整的 JWT)並保護這些端點免受不必要的訪客的侵害來進行升級。
敬請關注第 2 部分-在 Go 中使用 JWT(JSON Web 令牌)在 REST API 中設定用於驗證的中間件
以上是使用 Go 建立您的第一個 REST API的詳細內容。更多資訊請關注PHP中文網其他相關文章!