Jadual Kandungan
Menyediakan struktur projek dan kebergantungan
Tulis API REST Asas
Uji API anda
Masalah yang mungkin

Contoh API GO REST

Jul 14, 2025 am 03:01 AM
go rest api

Bagaimana dengan cepat melaksanakan contoh API REST yang ditulis dalam GO? Jawapannya ialah menggunakan perpustakaan standard Net/HTTP, yang boleh diselesaikan dalam tiga langkah berikut: 1. Sediakan struktur projek dan memulakan modul; 2. Tentukan struktur data dan fungsi pemprosesan, termasuk mendapatkan semua data, mendapatkan data tunggal berdasarkan ID, dan membuat data baru; 3. Daftar laluan dalam fungsi utama dan mulakan pelayan. Seluruh proses tidak memerlukan perpustakaan pihak ketiga. Fungsi API REST asas boleh dilaksanakan melalui perpustakaan standard dan boleh diuji melalui penyemak imbas atau pos.

Contoh API GO REST

Ingin cepat belajar tentang contoh API REST yang ditulis dalam GO? Malah, ia tidak rumit. Anda boleh berjalan dengan memahami beberapa langkah teras. Berikut adalah contoh mudah berdasarkan net/http dan Perpustakaan Standard, sesuai untuk rakan -rakan yang baru bermula dengan pembangunan web Go.

Contoh API GO REST

Menyediakan struktur projek dan kebergantungan

Buat direktori baru, seperti go-rest-example , dan kemudian memulakan modul:

 Go Mod Init Example.com/rest-api

Tidak perlu memasang perpustakaan pihak ketiga tambahan, hanya gunakan net/http yang dilengkapi dengan GO. Jika anda memerlukan middleware, pengumpulan penghalaan dan fungsi lain pada masa akan datang, anda boleh mempertimbangkan untuk memperkenalkan rangka kerja seperti Gin atau Echo , tetapi di sini kami tetap mudah terlebih dahulu.

Contoh API GO REST

Tulis API REST Asas

Buat fail main.go dan tulis yang berikut:

 Pakej utama

import (
    "Pengekodan/JSON"
    "FMT"
    "Log"
    "Net/http"
    "STRCONV"
)

taipkan struktur item {
    Id int `json:" id "`
    Nama String `Json:" Nama "`
}

var item = [] item {
    {Id: 1, nama: "Apple"},
    {Id: 2, nama: "pisang"},
}

Func GetItems (w http.ResponseWriter, r *http.request) {
    W.Header (). Set ("Kandungan-Jenis", "Aplikasi/JSON")
    json.newencoder (w) .encode (item)
}

Func GetItem (w http.ResponseWriter, r *http.request) {
    idstr: = r.url.path [len ("/item/"):]
    id, err: = strconv.atoi (idstr)
    jika err! = nil {
        http.error (W, "ID tidak sah", http.statusbadrequest)
        Kembali
    }

    untuk _, item: = item julat {
        jika item.id == id {
            W.Header (). Set ("Kandungan-Jenis", "Aplikasi/JSON")
            json.newencoder (w) .encode (item)
            Kembali
        }
    }

    http.notfound (w, r)
}

Funce CreateItem (w http.ResponseWriter, r *http.request) {
    item var newitem
    jika err: = json.newDecoder (r.body) .decode (& newItem); err! = nil {
        http.error (w, "badan permintaan tidak sah", http.statusbadrequest)
        Kembali
    }

    item = tambah (item, newItem)
    W.Header (). Set ("Kandungan-Jenis", "Aplikasi/JSON")
    W.WriteHeader (http.StatusCreated)
    json.newencoder (w) .encode (NewItem)
}

func main () {
    http.handlefunc ("/item", getItems)
    http.handlefunc ("/item/", getItem)
    http.handlefunc ("/create", createItem)

    fmt.println ("Pelayan permulaan di port 8080 ...")
    log.fatal (http.listenandserve (": 8080", nil))
}

Contoh ini melaksanakan tiga antara muka:

Contoh API GO REST
  • GET /items : Kembalikan semua data
  • GET /items/{id} : Mengembalikan satu data berdasarkan ID
  • POST /create : Tambahkan data baru

Uji API anda

Mulakan perkhidmatan:

 pergi berjalan main.go

Kemudian anda boleh menggunakan penyemak imbas atau pos untuk menguji:

  • Lawati http://localhost:8080/items untuk melihat semua penyertaan
  • Lawati http://localhost:8080/items/1 untuk melihat penyertaan tertentu
  • Hantar permintaan pos ke http://localhost:8080/create , badan berada dalam format json, sebagai contoh:
 {
    "Id": 3,
    "Nama": "Cherry"
}

Anda akan melihat data tambahan yang disimpan dalam ingatan (sudah tentu, ia akan hilang jika anda memulakan semula).


Masalah yang mungkin

  • Masalah Pencocokan Laluan : Pemprosesan penghalaan lalai Go tidak cukup pintar untuk membezakan laluan /items/123 dan /items , jadi perhatikan pesanan pemprosesan
  • CORS Cross-Domain Masalah : Sekiranya panggilan depan melaporkan ralat, ingatlah untuk menambah middleware atau menetapkan tajuk tindak balas secara manual
  • Tiada sambungan pangkalan data : Ini hanya satu contoh. Projek sebenar mengesyorkan menyambung ke SQLite, PostgreSQL dan pangkalan data lain

Pada dasarnya itu sahaja. Walaupun ia mudah, ia sudah mempunyai fungsi asas API REST. Jika anda ingin memperluaskan ciri -ciri, seperti menggunakan Gorilla Mux untuk meningkatkan penghalaan, menyertai pengesahan JWT, atau dokumentasi Swagger, anda boleh terus berkembang atas dasar ini.

Atas ialah kandungan terperinci Contoh API GO REST. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1596
276
Bagaimana anda bekerja dengan pembolehubah persekitaran di Golang? Bagaimana anda bekerja dengan pembolehubah persekitaran di Golang? Aug 19, 2025 pm 02:06 PM

GoProvidesBuilt-InsupportForHandlingenvironmentVariablesViateTheospackage, EnablingDevelelperstoread, Set, danManageenvironmentDataSecurelyAndeFicienty.ToreAdAvariable, UseOS.Getenv ("Kunci")

Cara membuat dan menggunakan jenis ralat tersuai di Go Cara membuat dan menggunakan jenis ralat tersuai di Go Aug 11, 2025 pm 11:08 PM

Dalam GO, mencipta dan menggunakan jenis ralat tersuai dapat meningkatkan ekspresi dan kebarangkalian pengendalian ralat. Jawapannya adalah untuk membuat ralat tersuai dengan menentukan struktur yang melaksanakan kaedah ralat (). Sebagai contoh, ValidationError mengandungi medan medan dan mesej dan mengembalikan maklumat ralat yang diformat. Kesalahan itu kemudiannya boleh dikembalikan dalam fungsi, mengesan jenis ralat tertentu melalui penegasan jenis atau ralat. Untuk melaksanakan logik yang berbeza. Anda juga boleh menambah kaedah tingkah laku seperti iskritikal kepada kesilapan tersuai, yang sesuai untuk senario yang memerlukan data berstruktur, pemprosesan yang dibezakan, eksport perpustakaan atau integrasi API. Dalam kes -kes yang mudah, kesilapan. Kesalahan, dan kesilapan yang telah ditetapkan seperti errnotfound boleh digunakan untuk sebanding

Cara melaksanakan cache LRU generik di mana sahaja Cara melaksanakan cache LRU generik di mana sahaja Aug 18, 2025 am 08:31 AM

Gunakan Go Generik dan Kontena/Senarai untuk mencapai cache LRU yang selamat; 2. Komponen teras termasuk peta, senarai berkaitan dua arah dan kunci mutex; 3. Dapatkan dan tambah operasi memastikan keselamatan bersamaan melalui kunci, dengan kerumitan masa O (1); 4. Apabila cache penuh, kemasukan terpanjang yang tidak digunakan akan dihapuskan secara automatik; 5. Dalam contohnya, cache dengan kapasiti 3 berjaya menghapuskan "B" yang paling lama tidak digunakan. Pelaksanaan ini sepenuhnya menyokong generik, cekap dan berskala.

Bagaimana anda mengendalikan isyarat dalam permohonan Go? Bagaimana anda mengendalikan isyarat dalam permohonan Go? Aug 11, 2025 pm 08:01 PM

Cara yang betul untuk memproses isyarat dalam aplikasi GO adalah dengan menggunakan pakej OS/isyarat untuk memantau isyarat dan melakukan penutupan elegan. 1. Gunakan isyarat.notify untuk menghantar sigint, sigterm dan isyarat lain ke saluran; 2. Jalankan perkhidmatan utama di Goroutine dan menyekat isyarat menunggu; 3. Selepas menerima isyarat, lakukan penutupan elegan dengan tamat masa melalui konteks.withtimeout; 4. Membersihkan sumber seperti sambungan pangkalan data penutup dan menghentikan Goroutine latar belakang; 5. Gunakan Signal.Reset untuk memulihkan tingkah laku isyarat lalai apabila perlu untuk memastikan bahawa program itu dapat ditamatkan dengan pasti di Kubernet dan persekitaran lain.

Cara Menggunakan Laluan/FilePath Untuk Manipulasi Laluan Lintas-Platform di GO Cara Menggunakan Laluan/FilePath Untuk Manipulasi Laluan Lintas-Platform di GO Aug 08, 2025 pm 05:29 PM

UseFilePath.join () tosafelyconstructPathSwithCorrectos-specificseparators.2.usefilepath.clean () toremoveredundantelements ".." dan "."

Bagaimana anda menentukan dan memanggil fungsi dalam perjalanan? Bagaimana anda menentukan dan memanggil fungsi dalam perjalanan? Aug 14, 2025 pm 06:22 PM

Dalam GO, menentukan dan memanggil fungsi menggunakan kata kunci Func dan sintaks tetap berikut, mula -mula menjelaskan jawapan: Definisi fungsi mesti termasuk nama, jenis parameter, jenis pulangan dan badan fungsi, dan lulus dalam parameter yang sepadan apabila memanggil; 1. Gunakan funcFunctionName (params) returnType {} sintaks apabila menentukan fungsi, seperti funcadd (a, bint) int {return b}; 2. Menyokong pelbagai nilai pulangan, seperti funcDivide (a, bfloat64) (float64, bool) {}; 3. Fungsi panggilan secara langsung menggunakan nama fungsi dengan kurungan untuk lulus parameter, seperti hasil: = tambah (3,5); 4. Nilai pulangan berganda boleh diterima oleh pembolehubah atau

Perbandingan Prestasi: Java vs Go untuk Perkhidmatan Backend Perbandingan Prestasi: Java vs Go untuk Perkhidmatan Backend Aug 14, 2025 pm 03:32 PM

GotypicallyoffersbetterruntimeperformanceWithhightherthroughputandlowerlatency, terutama sekali-sekala/o-heavyservices, duetoitslightweightgoroutinesandeficientscheduler, whentjava, wifklowertostart, canmatchgoincpu-boundsafterjitoptimization.2.

Parsing RSS dan Atom Feed dalam Aplikasi Go Parsing RSS dan Atom Feed dalam Aplikasi Go Aug 18, 2025 am 02:40 AM

Gunakan Perpustakaan Gofeed untuk menghuraikan RSS dan AtomFeed dengan mudah. Pertama, pasang perpustakaan melalui getgetgithub.com/mmcdole/gofeed, kemudian buat contoh parser dan hubungi kaedah parseUrl atau parseString untuk menghuraikan suapan jauh atau tempatan. Perpustakaan secara automatik akan mengenali format dan mengembalikan struktur suapan bersatu. Kemudian beralih ke feed.items untuk mendapatkan medan piawai seperti tajuk, pautan, dan masa penerbitan. Ia juga disyorkan untuk menetapkan masa tamat klien HTTP, mengendalikan kesilapan parsing, dan menggunakan prestasi pengoptimuman cache untuk akhirnya mencapai resolusi suapan yang mudah, cekap dan boleh dipercayai.

See all articles