在HTTP路由器中将未知URL路径设置为错误
问题:在HTTP路由器中将未知URL路径设置为错误,http,go,server,url-routing,Http,Go,Server,Url Routing,问题: 我很难找到一个问题的答案,我很可能不知道该怎么问 我的Go服务器有问题。我对围棋编程没有太多的了解,但我确实用它制作了一个服务器。此服务器将显示一个JSON文件,然后将其拉入我的另一个HTML文件,该文件现在不相关。这很有效。我的问题是到服务器的路径。 代码 package main import ( "encoding/json" "fmt" "net/http" "os" "time" ) type Event struct { S
我很难找到一个问题的答案,我很可能不知道该怎么问
我的Go服务器有问题。我对围棋编程没有太多的了解,但我确实用它制作了一个服务器。此服务器将显示一个JSON文件,然后将其拉入我的另一个HTML文件,该文件现在不相关。这很有效。我的问题是到服务器的路径。 代码
package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
"time"
)
type Event struct {
Start time.Time `json:"start"`
End time.Time `json:"end"`
Summary string `json:"summary"`
Organizer string `json:"organizer"`
MeetURL string `json:"meet_url"`
}
type EventSlice struct {
Events []Event `json:"events"`
}
func loadEvents(filename string) (EventSlice, error) {
// Open events file.
file, err := os.Open(filename)
if err != nil {
return EventSlice{}, err
}
var list EventSlice
// Parse events from json file to events slice.
err = json.NewDecoder(file).Decode(&list)
if err != nil {
fmt.Println("Displays", err)
return EventSlice{}, err
}
return list, nil
}
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
events, err := loadEvents("json.json")
if err != nil {
fmt.Fprintln(w, err)
}
// Reduntant step in real life
err = json.NewEncoder(w).Encode(events)
if err != nil {
fmt.Fprintln(w, err)
}
}
func handler_over(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "This is my server. Hello.")
}
func main() {
http.HandleFunc("/", handler_over)
http.HandleFunc("/events", handler)
http.ListenAndServe(":8080", nil)
}
如果我运行服务器,然后在这个url上将路径更改为example:,它仍然会显示handler_over的函数。将显示一个字符串:这是我的服务器。您好
我该怎么做,所以当你把URL改为未知路径(不是路径)时,它会显示一个错误,比如404页面未找到。也就是说,在服务器上只能识别两条路径:“/”路径和“/事件”路径。
注意
这个问题以前可能已经问过了,但我不知道该怎么问。如果您有任何帮助或对答案的重定向,我们将不胜感激。请检查handler_中的r.URL.Path,并采取相应的行动。
func handler_over(w http.ResponseWriter, r *http.Request) {
// The "/" pattern matches everything, so we need to check
// that we're at the root here.
if r.URL.Path != "/" {
http.NotFound(w, req)
return
}
fmt.Fprintf(w, "This is my server. Hello.")
}