我看了下别人用 go 写的各种系统,都是 crud 四个方法都得写。
看 reddit,有个哥们的想法去实现了 DRF 的那套玩意:
func main() {
r := rest.New()
userViewSet := ViewSet { Type: reflect.TypeOf(&User{}) }
r.REST("/users", userViewSet)
}
func REST(path string, viewSet ViewSet) {
group := e.Group(path)
g.Use(rest.ViewSetMiddleware(viewSet))
g.GET("/", rest.listHandler)
g.GET("/:id", rest.GetHandler)
// and so on
}
func ViewSetMiddleware(viewSet ViewSet) {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
//stuff the view set onto the context
}
}
}
func GetHandler(c echo.Context) error {
myStruct := reflect.New(c.GetViewContext().Type)
return c.JSON(db.First(&myStruct, c.Param("id")))
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.