go - Goji 子路由器返回 404
问题描述
这是一些代码
package main
import (
"fmt"
"net/http"
"github.com/zenazn/goji"
"github.com/zenazn/goji/web"
"github.com/zenazn/goji/web/middleware"
)
type handler struct{}
func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
subMux := web.New()
subMux.Use(middleware.SubRouter)
subMux.Post("/:id", func(c web.C, w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "OK")
})
subMux.ServeHTTP(w, r)
}
func main() {
goji.Handle("/inner/*", handler{})
goji.Serve()
}
围绕此的主要思想是封装处理程序路由并使用标准的 net/http 处理程序接口。那么为什么下面的代码会产生 404 而不是使用 subrouter 呢?
curl -X POST http://localhost:8000/inner/5
404 page not found
解决方案
如果你像这样改变它,你可以得到帖子数据。
package main
import (
"fmt"
"net/http"
"github.com/zenazn/goji"
"github.com/zenazn/goji/web"
"github.com/zenazn/goji/web/middleware"
)
type handler struct{}
func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "OK")
}
func main() {
subMux := web.New()
subMux.Use(middleware.SubRouter)
subMux.Post("/:id", handler{})
goji.Handle("/inner/*", subMux)
goji.Serve()
}
推荐阅读
- web-config - IIS 10 为 404 页面返回 200
- amazon-cloudwatch - 有没有办法截断 CloudWatch 中的字段值?
- powershell - 使用 Powershell CSOM 的 Sharepoint Online 列表,无法提取列表数据
- python - 检查数据中是否有日期跳过
- c# - 选择保留在excel中的前一个单元格上
- c# - 如何检查属性[]是否已被使用
- java - 带有匿名内部类的 Java 比较器接口 NullsLast
- typescript - 以类型安全的方式迭代对象属性
- c# - 如何实现自定义授权asp.net core mvc
- java - 如何在 Android 中使用 MPAndroidChart 自定义饼图?