Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在HTTP路由器中将未知URL路径设置为错误_Http_Go_Server_Url Routing - Fatal编程技术网

在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.")
}