Membina API REST yang mudah dengan Go

Susan Sarandon
Lepaskan: 2024-10-31 22:06:44
asal
554 orang telah melayarinya

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

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

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

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

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

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

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

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

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

Menggunakan API

Setelah anda meletakkan kod itu, jalankannya:

go run main.go
Salin selepas log masuk

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

Senaraikan semua pelayan:

curl localhost:8080/servers
Salin selepas log masuk

Dapatkan pelayan khusus:

curl localhost:8080/servers/srv1
Salin selepas log masuk

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"}';
Salin selepas log masuk

Padam pelayan:

curl -X DELETE localhost:8080/servers/srv1
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!