http - 在 HTTP 路由器中将未知 URL 路径设置为错误
问题描述
问题:
我很难找到一个问题的答案,这很有可能我不知道如何问。
我在使用 Go Server 时遇到问题。我对 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:http: //0.0.0.0:8080/ otherpath,它仍然会显示 handler_over 的函数。这将显示一个字符串:This is my server.Hello
。
我该怎么做,所以当您将 URL 更改为未知路径(这不是路径)时,它会显示一个错误,例如 404 Page not found。意思是,服务器上只能识别 2 个路径:“/”路径和“/events”路径。
注意 这个问题之前可能已经被问过,但我不知道如何问这个问题。任何帮助或对答案的重定向将不胜感激。
解决方案
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.")
}
推荐阅读
- python - Python urllib2.Request 标题响应对于 instagram 不可读
- ios - 如何在推送的视图控制器中的导航栏下方添加一行?
- python - 正则表达式仅搜索一位数字
- c - 如何更改全局数组的元素以供所有线程查看
- vim - 如何编写 vim 函数来搜索多个字符串(当我调用函数时)并突出显示所有字符串(以便我使用 n/N 移动)
- javascript - 如何使用下拉选择操作道具值
- matlab - 通过 Matlab 找到线性方程组的完整和符号解
- c# - 使用 C# 在投票中发布多项选择
- excel - 如何在 Excel 图表的水平轴上每 6 个单位使标签变为红色?
- python - 在 RH6 中安装 Gunicorn 指向 Python2.7