问题:
我很难找到问题的答案,但我不知道怎么问,这是一个很大的可能性。
我在Go Server上遇到问题。我对编程并不了解很多,但是我确实用它做了一个服务器。该服务器将显示一个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上将路径更改为示例:http://0.0.0.0:8080/otherpath,它将仍然显示handler_over的功能。它将显示一个字符串:This is my server.Hello
。
我该怎么办,所以当您将URL更改为未知路径(不是路径)时,它将显示错误,例如404页面未找到。从意义上说,服务器上只有两个路径可以识别:“ /”路径和“ / events”路径。
注意 这个问题以前可能已经被问过了,但是我不知道该怎么问。任何帮助或重定向到答案将不胜感激。
答案 0 :(得分:0)
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.")
}