Rumah > pembangunan bahagian belakang > Golang > Mengapa mux.Vars() mengembalikan peta kosong

Mengapa mux.Vars() mengembalikan peta kosong

WBOY
Lepaskan: 2024-02-09 16:09:09
ke hadapan
1276 orang telah melayarinya

为什么 mux.Vars() 返回空映射

Editor PHP Youzi berada di sini untuk menjawab soalan biasa: Mengapa peta kosong dikembalikan apabila menggunakan kaedah mux.Vars()? Masalah ini mungkin dihadapi semasa proses pembangunan, biasanya disebabkan oleh beberapa masalah konfigurasi atau penggunaan. Dalam artikel ini, kami akan membincangkan kemungkinan punca secara terperinci dan menyediakan penyelesaian untuk membantu pembangun menyelesaikan masalah ini dengan cepat. Mari lihat!

Kandungan soalan

Saya mendapat peta kosong[] daripada mux.vars[].

Selepas menjejaki isu itu, nampaknya map[]kosong melalui berbilang fail saya.

Dalam fail yang sama: Saya telah mengimport fail lain sebagai modul (saya percaya) dalam import

package main

import(
"github.com/ny0ttt/go-bookstore/pkg/controllers"
//note that this is imported from powershell, go mod init "github.com/ny0ttt/go-bookstore"
)
Salin selepas log masuk

Selepas berlari go run main.go saya mendapat peta[] sebagai map[id]

Dalam fail yang berbeza:

Mengikuti import yang sama seperti yang sebelumnya, saya menerima peta kosong[]

Ini adalah struktur fail saya

go-test/cmd/main/main.exe
go-test/cmd/main/main.go
go-test/pkg/config/app.go
go-test/pkg/models/models.go
go-test/pkg/controllers/book-controller.go
go-test/pkg/utils/utils.go
go-test/go.sum
go-test/go.mod
Salin selepas log masuk

Fail mod saya mengandungi

module github.com/ny0ttt/go-bookstore

go 1.20

require (
    github.com/go-sql-driver/mysql v1.5.0
    github.com/gorilla/mux v1.8.0
    github.com/jinzhu/gorm v1.9.16
)

require github.com/jinzhu/inflection v1.0.0 // indirect
Salin selepas log masuk

Ini kod saya:

Dalam pengawal saya

func getbookbyid(w http.responsewriter, r *http.request){
    vars := mux.vars(r)
    bookid := vars["id"]
    id, err := strconv.parseint(bookid, 0, 0)
    if err != nil{
        fmt.println("error while parsing")
        fmt.println(r)
        fmt.println(bookid)
        fmt.println(vars)
    }
    bookdetails, _ := models.getbookbyid(id) //mthis model returns 2 variable but we will be using only one of them. refer models
    res, _ := json.marshal(bookdetails)
    w.header().set("content-type","pkglication/json")
    w.writeheader(http.statusok)
    w.write(res)
}
Salin selepas log masuk

Dalam laluan saya

func main() {
    r := mux.newrouter()
    
    //routes.registerbookstoreroutes(r)
    r.handlefunc("/book/", controllers.getbook).methods("get")
    r.handlefunc("/book/", controllers.createbook).methods("post")
    r.handlefunc("/book/{id}", controllers.getbookbyid).methods("get")
    r.handlefunc("/book/{bookid}", controllers.updatebook).methods("put")
    r.handlefunc("/book/{bookid}", controllers.deletebook).methods("delete")
        http.handle("/", r)
    log.fatal(http.listenandserve(":2222", r)) // creating a server
}
Salin selepas log masuk

Output

error while parsing
&{GET /book/1 HTTP/1.1 1 1 map[Accept:[*/*] Accept-Encoding:[gzip, deflate, br] Connection:[keep-alive] Postman-Token:[a28eebe1-b6d4-4aff-89ed-d3b93a4ed1df] User-Agent:[PostmanRuntime/7.32.3]] {} <nil> 0 [] false :2222 map[] map[] <nil> map[] 127.0.0.1:52035 /book/1 <nil> <nil> <nil> 0xc000282a20}

map[]
Salin selepas log masuk

Nota: Saya mencetak nilai supaya saya dapat menjejaki kesilapan saya, *http.request Tiada nilai yang dipetakan? Saya tidak pasti bagaimana rupa peta[] yang mengembalikan http.request.

Saya mencari penyelesaian tetapi nampaknya saya memerlukan penjelasan lanjut tentang alternatif ini. Saya mendongak r.url.query tetapi masalah yang mereka hadapi ialah apabila menggunakan struktur penghalaan yang berbeza.

Saya juga sedang mencari alternatif lain menggunakan `mux.routematch`, tetapi saya fikir saya boleh menggunakan beberapa penjelasan.

Penyelesaian

Masalah selesai

Saya baru sahaja memindahkan projek saya ke desktop (saya pasti anda boleh mengalihkannya ke mana-mana yang anda mahu, asalkan anda tidak memerlukan hak pentadbir untuk mengakses direktori) dan ia berfungsi.

Mulai sekarang, saya akan terus meneroka projek dalam direktori yang boleh diakses. Terima kasih.

Atas ialah kandungan terperinci Mengapa mux.Vars() mengembalikan peta kosong. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan