Membina API REST Pertama Anda dengan Go

Linda Hamilton
Lepaskan: 2024-10-02 14:07:30
asal
247 orang telah melayarinya

Building Your First REST API with Go

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!

Kenapa Pergi?

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?

Menyediakan Projek Pergi Anda

Baiklah, cukup sembang, mari kita mengotorkan tangan kita. Pertama, kita perlu menyediakan projek Go yang mudah. Jangan risau, saya melindungi anda:

  1. Pastikan Go dipasang. Jika tidak, dapatkan di sini.

  2. 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
Salin selepas log masuk
  1. Di dalam direktori ini, cipta fail baharu yang dipanggil main.go, dan bersiap sedia untuk beberapa keajaiban pengekodan.

Menulis 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:

  • DAPATKAN /buku – Ambil semua buku (yay, buku!)
  • POST /books – Tambah buku baharu
  • GET /books/:id – Ambil buku tertentu dengan IDnya (kerana tidak semua buku dicipta sama)

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))
}
Salin selepas log masuk

Memecahkannya

  1. Penghala Mux: Kami menggunakan gorila/mux untuk mengendalikan penghalaan dalam API kami. Ia memudahkan untuk menentukan laluan dan menjadi pilihan untuk membina perkhidmatan web dalam Go. Anda boleh memasangnya dengan:
   go get -u github.com/gorilla/mux
Salin selepas log masuk
  1. 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!

  2. 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.

Menjalankan API

Sekarang untuk bahagian yang menyeronokkan—mari jalankan perkara ini! Di terminal anda, hanya laksanakan:

go run main.go
Salin selepas log masuk

Boom! API anda sedang aktif dan berjalan. Anda kini boleh menggunakan alatan seperti Posmen atau curl untuk mengujinya:

  • Dapatkan semua buku:
  curl http://localhost:8000/books
Salin selepas log masuk
  • Dapatkan buku khusus:
  curl http://localhost:8000/books/1
Salin selepas log masuk
  • Tambah buku baharu:
  curl -X POST http://localhost:8000/books -d '{"title":"New Book","author":"New Author"}' -H "Content-Type: application/json"
Salin selepas log masuk

Apa Seterusnya?

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan