Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Membina API REST yang mudah dengan Go

Membina API REST yang mudah dengan Go

Susan Sarandon
Susan Sarandonasal
2024-10-31 22:06:44540semak imbas

Building a simple REST API with Go

Go ialah bahasa yang bagus untuk pengaturcaraan sistem tetapi ia juga bersinar di web, terutamanya apabila membina REST API. Panduan ini berjalan melalui penciptaan API REST mudah menggunakan perpustakaan standard Go. Kami akan membina API untuk mengurus senarai pelayan, membenarkan kami menambah, mengalih keluar dan melihat rekod pelayan. Kami juga akan menggunakan penambahbaikan penghala baharu Go 1.22 untuk pemadanan kaedah yang membolehkan kami mempunyai laluan dan pengendali yang lebih bersih.

Panduan ini menganggap anda mempunyai pemahaman asas tentang Go dan ia dipasang pada mesin anda.

Menyediakan

Buat direktori baharu untuk projek anda dan mulakan modul Go:

mkdir server-api
cd server-api
go mod init server-api

Kod

Buat fail bernama main.go. Kami akan menggunakan pakej http standard Go - ia mempunyai semua yang kami perlukan untuk API asas.

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"
)

Pertama, mari kita tentukan rupa pelayan. Kami akan memastikannya mudah - hanya ID, nama, alamat IP dan wilayah:

type Server struct {
    ID     string `json:"id"`
    Name   string `json:"name"`
    IP     string `json:"ip"`
    Region string `json:"region`
}

Kami akan menyimpan pelayan kami dalam ingatan menggunakan kepingan. Dalam aplikasi sebenar, anda mungkin akan menggunakan pangkalan data:

var servers = []Server{
    {ID: "srv1", Name: "prod-1", IP: "10.0.1.1", Region: "us-east"},
    {ID: "srv2", Name: "prod-2", IP: "10.0.1.2", Region: "eu-west"},
}

Mencipta penghala

Seterusnya, kami akan menyediakan laluan kami. Go 1.22 memperkenalkan sintaks penghalaan baharu yang menjadikannya cukup mudah:

func main() {
    mux := http.NewServeMux()

    mux.HandleFunc("GET /servers", listServers)
    mux.HandleFunc("GET /servers/{id}", showServer)
    mux.HandleFunc("POST /servers", createServer)
    mux.HandleFunc("DELETE /servers/{id}", deleteServer)

    fmt.Println("Server starting on port 8080...")
    log.Fatal(http.ListenAndServe(":8080", mux))
}

Pengendali

Sekarang mari kita laksanakan setiap pengendali. Pertama, menyenaraikan semua pelayan:

func listServers(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(servers)
}

Mendapatkan pelayan tunggal melalui ID:

func showServer(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    id := r.PathValue("id")

    for _, server := range servers {
        if server.ID == id {
            json.NewEncoder(w).Encode(server)
            return
        }
    }

    http.Error(w, "Server not found", http.StatusNotFound)
}

Mencipta pelayan baharu:

func createServer(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")

    var server Server
    if err := json.NewDecoder(r.Body).Decode(&server); err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }

    servers = append(servers, server)
    w.WriteHeader(http.StatusCreated)
    json.NewEncoder(w).Encode(server)
}

Dan akhirnya, memadamkan pelayan:

func deleteServer(w http.ResponseWriter, r *http.Request) {
    id := r.PathValue("id")

    for i, server := range servers {
        if server.ID == id {
            servers = append(servers[:i], servers[i+1:]...)
            w.WriteHeader(http.StatusNoContent)
            return
        }
    }

    http.Error(w, "Server not found", http.StatusNotFound)
}

Menggunakan API

Setelah anda meletakkan kod itu, jalankannya:

go run main.go

Berikut ialah cara untuk berinteraksi dengan setiap titik akhir menggunakan cURL:

Senaraikan semua pelayan:

curl localhost:8080/servers

Dapatkan pelayan khusus:

curl localhost:8080/servers/srv1

Tambah pelayan:

curl -X POST localhost:8080/servers   -H "Content-Type: application/json";   -d '{"id":"srv3","name":"prod-3","ip":"10.0.1.3","region":"ap-south"}';

Padam pelayan:

curl -X DELETE localhost:8080/servers/srv1

Apa Seterusnya?

Ini ialah API asas, tetapi banyak lagi yang boleh anda tambahkan:

  • Pengesahan input
  • Pengendalian ralat yang betul
  • Pelayan berterusan dengan pangkalan data seperti PostgreSQL
  • Pengesahan
  • Minta pengelogan
  • Ujian unit

Pustaka standard sangat berkemampuan untuk membina API. Walaupun terdapat lebih banyak rangka kerja berciri penuh tersedia, bermula dengan pustaka standard membantu anda memahami asas tanpa sebarang keajaiban berlaku di sebalik tabir.

Atas ialah kandungan terperinci Membina API REST yang mudah dengan Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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