Membina API REST Pertama Anda dengan Go – Mari Bermula!
Jadi, anda pernah mendengar buzz tentang Go, bukan? Ia pantas, ia mudah, dan pada asasnya ia adalah bintang rock pembangunan bahagian belakang hari ini. Jika anda baru menggunakan Go atau hanya ingin membina sesuatu yang menarik dengannya, anda telah datang ke tempat yang betul. Minggu ini, kami akan menyelami membina API REST anda sendiri dengan Go, jadi sandarkan diri—ia akan menjadi perjalanan yang menyeronokkan!
Sekarang, mengapakah begitu ramai pembangun terpedaya dengan Go? Nah, bayangkan ini: Jurutera Google, bosan menunggu program mereka disusun, memutuskan untuk mencipta sesuatu yang tidak akan membuatkan mereka mahu mencabut rambut mereka. Masukkan Go—bahasa yang bukan sahaja menyelesaikan tugas tetapi melakukannya dengan pantas dan tanpa susah payah.
Go dibina untuk perkakasan hari ini, memanfaatkan sepenuhnya sistem berbilang teras. senjata rahsianya? Goroutines—pekerja serentak kecil ajaib ini yang boleh mengendalikan banyak tugas secara serentak tanpa mengeluarkan peluh. Sama ada anda sedang membina apl web, API atau perkhidmatan mikro, Go memastikan perkara berjalan lancar, seperti mesin minyak yang sentiasa anda impikan.
Dan inilah penyepaknya: Pergi adalah sangat mudah untuk dipelajari. Sama ada anda beralih daripada Python, Java atau sesuatu yang "klasik" seperti PHP, anda akan siap dan mengekod dalam Go sebelum anda boleh menyebut "Hello, World!" Dan ia berjalan pantas—seperti, sangat laju. Perlu saya katakan lebih lanjut?
Baiklah, cukup sembang, mari kita mengotorkan tangan kita. Pertama, kita perlu menyediakan projek Go yang mudah. Jangan risau, saya melindungi anda:
Pastikan Go dipasang. Jika tidak, dapatkan di sini.
Sekarang, mari buat direktori projek dan mulakan projek:
mkdir go-rest-api cd go-rest-api go mod init github.com/yourusername/go-rest-api
Di sinilah perkara menjadi menarik! Kami akan membina API yang sangat mudah untuk mengurus senarai buku (kerana siapa yang tidak suka buku?). API kami akan mempunyai titik akhir berikut:
Bersedia? Mari selami kod:
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
Pengendali: Kami telah menyediakan fungsi getBooks, getBook dan createBook untuk mengendalikan permintaan HTTP. Mereka menggunakan pakej net/http Go untuk mengendalikan respons dan pengekodan/penyahkodan data. Mudah-mudah!
Pengekodan JSON: Pakej json terbina dalam Go sedang melakukan tugas berat di sini, menukar data kami kepada format JSON untuk komunikasi mudah antara pelanggan dan API.
Sekarang untuk bahagian yang menyeronokkan—mari jalankan perkara ini! Di terminal anda, hanya laksanakan:
go run main.go
Boom! API anda sedang aktif dan berjalan. Anda kini boleh menggunakan alatan seperti Posmen atau curl untuk mengujinya:
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 kecil ini hanyalah puncak gunung ais apabila ia melibatkan perkara yang boleh dilakukan oleh Go dalam pembangunan bahagian belakang. Minggu depan, kami akan meningkatkan tahap dengan menambahkan pengesahan (ya, kami akan menggunakan JWT sepenuhnya) dan melindungi titik akhir ini daripada pelawat yang tidak diingini.
Nantikan bahagian 2 -- Menyediakan perisian tengah untuk pengesahan dalam API REST menggunakan JWT (Token Web JSON) dalam Go
Atas ialah kandungan terperinci Membina API REST Pertama Anda dengan Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!