Warum mux.Vars() eine leere Karte zurückgibt

WBOY
Freigeben: 2024-02-09 16:09:09
nach vorne
1242 Leute haben es durchsucht

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

PHP-Editor Youzi ist hier, um eine häufig gestellte Frage zu beantworten: Warum wird eine leere Map zurückgegeben, wenn die Methode mux.Vars() verwendet wird? Dieses Problem kann während des Entwicklungsprozesses auftreten, normalerweise aufgrund von Konfigurations- oder Verwendungsproblemen. In diesem Artikel werden wir die möglichen Ursachen im Detail besprechen und Lösungen anbieten, die Entwicklern helfen, dieses Problem schnell zu lösen. Lass uns einen Blick darauf werfen!

Frageninhalt

Ich erhalte eine leere Karte[] von mux.vars[].

Nachdem ich das Problem verfolgt habe, scheint es, dass ein leeres map[]durch mehrere meiner Dateien läuft.

In derselben Datei: Ich habe eine andere Datei als Modul (glaube ich) in import

importiert
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"
)
Nach dem Login kopieren

Nachdem ich gelaufen bin go run main.go habe ich die Karte[] als Karte[id]

erhalten

In verschiedenen Dateien:

Nach dem gleichen Import wie beim vorherigen erhalte ich eine leere map[]

Das ist meine Dateistruktur

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
Nach dem Login kopieren

Meine Mod-Datei enthält

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
Nach dem Login kopieren

Das ist mein Code:

In meinem Controller

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)
}
Nach dem Login kopieren

Auf meiner Route

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
}
Nach dem Login kopieren

Ausgabe

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[]
Nach dem Login kopieren

Hinweis: Ich drucke die Werte aus, damit ich nachverfolgen kann, wo ich einen Fehler gemacht habe. *http.request Keine Werte zugeordnet? Ich bin mir nicht sicher, wie die Map[] aussehen soll, die http.request zurückgibt.

Ich habe nach Lösungen gesucht, aber anscheinend brauche ich weitere Erklärungen zu diesen Alternativen. Ich habe nachgeschlagen r.url.query, aber das Problem, mit dem sie konfrontiert waren, war die Verwendung unterschiedlicher Routing-Strukturen.

Ich habe auch nach einer anderen Alternative mit „mux.routematch“ gesucht, aber ich dachte, ich könnte eine Erklärung gebrauchen.

Lösung

Problem gelöst

Ich habe gerade mein Projekt auf den Desktop verschoben (ich bin sicher, Sie können es an einen beliebigen Ort verschieben, solange Sie keine Administratorrechte benötigen, um auf das Verzeichnis zuzugreifen) und es funktioniert.

Von nun an werde ich weiterhin Projekte im zugänglichen Verzeichnis erkunden. Danke.

Das obige ist der detaillierte Inhalt vonWarum mux.Vars() eine leere Karte zurückgibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage