Golang melaksanakan rehat
Golang ialah bahasa pengaturcaraan yang cekap, pantas, selamat dan boleh dipercayai. Sintaksnya yang ringan, keupayaan pengaturcaraan serentak dan perpustakaan API yang kaya menjadikannya bahasa yang ideal untuk membina aplikasi berprestasi tinggi dan ketersediaan tinggi. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Golang untuk melaksanakan API RESTful.
Apakah itu RESTful API?
REST (Pemindahan Negeri Perwakilan) ialah gaya seni bina dan corak reka bentuk untuk API Web. RESTful API ialah API yang berkomunikasi dengan pelanggan menggunakan protokol HTTP. Ia membenarkan penggunaan kata kerja HTTP (GET, POST, PUT, DELETE, dll.) untuk melaksanakan operasi (baca, cipta, kemas kini dan padam sumber) pada pelayan. API RESTful direka untuk kebolehskalaan, kebolehlanjutan dan kebolehgunaan semula.
Gunakan Golang untuk melaksanakan API RESTful
Di bawah kami akan menggunakan Golang untuk melaksanakan API RESTful yang mudah. API ini akan menggunakan Gorilla Mux dan Gorm untuk mengendalikan penghalaan dan pangkalan data. Gorilla Mux ialah penghala dan penjadual HTTP yang berkuasa, dan Gorm ialah perpustakaan ORM yang pantas dan ringkas.
Pertama, kita perlu memasang perpustakaan ini. Saya menggunakan mod go untuk menguruskan kebergantungan. Dalam direktori akar projek, buka terminal dan masukkan arahan berikut:
go mod init example.com/restful-api go get github.com/gorilla/mux go get github.com/jinzhu/gorm go get github.com/go-sql-driver/mysql
Sekarang, kita boleh mula menulis kod. Kita perlu mencipta fail berikut:
- main.go
- models/user.go
- pengendali/user.go
- main.go
main.go
ialah fail penyertaan kami. Kami akan mendaftarkan laluan dan memulakan pelayan dalam fail ini. Berikut ialah kod:
package main import ( "log" "net/http" "example.com/restful-api/handlers" "github.com/gorilla/mux" ) func main() { r := mux.NewRouter() r.HandleFunc("/users", handlers.GetUsers).Methods("GET") r.HandleFunc("/users", handlers.CreateUser).Methods("POST") r.HandleFunc("/users/{id}", handlers.GetUser).Methods("GET") r.HandleFunc("/users/{id}", handlers.UpdateUser).Methods("PUT") r.HandleFunc("/users/{id}", handlers.DeleteUser).Methods("DELETE") log.Fatal(http.ListenAndServe(":8080", r)) }
Dalam kod ini, kami menggunakan mux.NewRouter()
untuk mencipta penghala baharu dan mendaftarkan fungsi pengendali untuk setiap kaedah HTTP (GET, POST, PUT dan DELETE).
- models/user.go
Seterusnya, kami akan menentukan model data pengguna kami. Kami akan menulisnya dalam models/user.go
. Berikut ialah kod:
package models import "github.com/jinzhu/gorm" type User struct { gorm.Model Name string `gorm:"not null"` Email string `gorm:"not null;unique_index"` Age int `gorm:"not null"` }
Dalam model ini, kami menggunakan struktur Model Gorm. Ia mengandungi medan rekod pangkalan data biasa seperti medan ID, CreatedAt dan UpdatedAt. Kami telah menentukan medan Nama, E-mel dan Umur yang akan disimpan dalam pangkalan data.
- pengendali/pengguna.go
Akhir sekali, kami akan menulis fungsi pengendali kami. Kami akan menulisnya dalam handlers/user.go
. Berikut ialah kodnya:
package handlers import ( "encoding/json" "fmt" "net/http" "strconv" "example.com/restful-api/models" "github.com/gorilla/mux" "github.com/jinzhu/gorm" ) var db *gorm.DB func init() { var err error db, err = gorm.Open("mysql", "{username}:{password}@tcp({host}:{port})/{database}") if err != nil { panic("failed to connect database") } db.AutoMigrate(&models.User{}) } func GetUsers(w http.ResponseWriter, r *http.Request) { var users []models.User db.Find(&users) json.NewEncoder(w).Encode(users) } func GetUser(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id, _ := strconv.Atoi(params["id"]) var user models.User db.First(&user, id) json.NewEncoder(w).Encode(user) } func CreateUser(w http.ResponseWriter, r *http.Request) { var user models.User json.NewDecoder(r.Body).Decode(&user) db.Create(&user) json.NewEncoder(w).Encode(user) } func UpdateUser(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id, _ := strconv.Atoi(params["id"]) var user models.User db.First(&user, id) json.NewDecoder(r.Body).Decode(&user) db.Save(&user) json.NewEncoder(w).Encode(user) } func DeleteUser(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id, _ := strconv.Atoi(params["id"]) var user models.User db.Delete(&user, id) fmt.Fprintf(w, "User #%d deleted successfully", id) }
Kami mula-mula menggunakan kaedah gorm.Open()
Gorm untuk menyambung ke pangkalan data dan memindahkan model pengguna kami secara automatik. Seterusnya, kami menulis lima fungsi pemproses: GetUsers()
, GetUser()
, CreateUser()
, UpdateUser()
dan DeleteUser()
. Fungsi
GetUsers()
mengambil semua pengguna daripada pangkalan data dan menghantarnya kembali kepada klien sebagai respons JSON. Fungsi
GetUser()
menggunakan ID dalam parameter URL untuk mencari dan mengembalikan maklumat pengguna individu. Kami menggunakan kaedah mux.Vars()
untuk mengekstrak ID daripada permintaan. Fungsi
CreateUser()
membaca data JSON daripada badan permintaan dan menyimpan maklumat pengguna ke dalam pangkalan data. Fungsi
UpdateUser()
membaca data JSON daripada permintaan dan mengemas kini maklumat pengguna yang sepadan menggunakan ID dalam parameter URL. Fungsi
DeleteUser()
menggunakan ID dalam parameter URL untuk memadamkan pengguna yang sepadan daripada pangkalan data.
Kini kami telah melengkapkan semua komponen API RESTful kami. Kami boleh menguji API pada port tempatan menggunakan alat seperti Posman atau curl.
Ringkasan
Golang ialah bahasa yang berkuasa dan mudah digunakan Ia sangat mudah, pantas dan cekap untuk melaksanakan API RESTful menggunakan Golang. Kami boleh menggunakan Gorilla Mux dan Gorm untuk mengendalikan penghalaan dan operasi pangkalan data. Dalam artikel ini, kami menunjukkan cara membuat API RESTful menggunakan Golang, berdasarkan contoh mudah. Melalui artikel ini, pembaca boleh memahami dan mempelajari cara menggunakan Golang untuk membina API RESTful dengan cepat.
Atas ialah kandungan terperinci Golang melaksanakan rehat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



OpenSSL, sebagai perpustakaan sumber terbuka yang digunakan secara meluas dalam komunikasi yang selamat, menyediakan algoritma penyulitan, kunci dan fungsi pengurusan sijil. Walau bagaimanapun, terdapat beberapa kelemahan keselamatan yang diketahui dalam versi sejarahnya, yang sebahagiannya sangat berbahaya. Artikel ini akan memberi tumpuan kepada kelemahan umum dan langkah -langkah tindak balas untuk OpenSSL dalam sistem Debian. Debianopenssl yang dikenal pasti: OpenSSL telah mengalami beberapa kelemahan yang serius, seperti: Kerentanan Pendarahan Jantung (CVE-2014-0160): Kelemahan ini mempengaruhi OpenSSL 1.0.1 hingga 1.0.1f dan 1.0.2 hingga 1.0.2 versi beta. Penyerang boleh menggunakan kelemahan ini untuk maklumat sensitif baca yang tidak dibenarkan di pelayan, termasuk kunci penyulitan, dll.

Artikel ini menerangkan cara menggunakan alat PPROF untuk menganalisis prestasi GO, termasuk membolehkan profil, mengumpul data, dan mengenal pasti kesesakan biasa seperti CPU dan isu memori.

Artikel ini membincangkan ujian unit menulis di GO, meliputi amalan terbaik, teknik mengejek, dan alat untuk pengurusan ujian yang cekap.

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Artikel ini membincangkan menguruskan kebergantungan modul Go melalui Go.Mod, meliputi spesifikasi, kemas kini, dan resolusi konflik. Ia menekankan amalan terbaik seperti versi semantik dan kemas kini biasa.

Artikel ini memperkenalkan pelbagai kaedah dan alat untuk memantau pangkalan data PostgreSQL di bawah sistem Debian, membantu anda memahami pemantauan prestasi pangkalan data sepenuhnya. 1. Gunakan PostgreSQL untuk membina pemantauan PostgreSQL sendiri menyediakan pelbagai pandangan untuk pemantauan aktiviti pangkalan data: PG_STAT_ACTIVITY: Memaparkan aktiviti pangkalan data dalam masa nyata, termasuk sambungan, pertanyaan, urus niaga dan maklumat lain. PG_STAT_REPLITI: Memantau status replikasi, terutamanya sesuai untuk kluster replikasi aliran. PG_STAT_DATABASE: Menyediakan statistik pangkalan data, seperti saiz pangkalan data, masa komitmen/masa rollback transaksi dan petunjuk utama lain. 2. Gunakan alat analisis log pgbadg
