mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 10:41:03 +01:00
76 lines
1.5 KiB
Go
76 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/kataras/iris/v12"
|
|
"github.com/kataras/iris/v12/mvc"
|
|
)
|
|
|
|
func main() {
|
|
app := iris.New()
|
|
app.RegisterView(iris.HTML("./views", ".html"))
|
|
|
|
m := mvc.New(app)
|
|
m.Handle(new(controller))
|
|
|
|
app.Listen(":8080")
|
|
}
|
|
|
|
type errorResponse struct {
|
|
Code int
|
|
Message string
|
|
}
|
|
|
|
/*
|
|
// Note: if a struct implements the standard go error, so it's an error
|
|
// and its Error() is not empty, then its text will be rendered instead,
|
|
// override any Dispatch method.
|
|
func (e errorResponse) Error() string {
|
|
return e.Message
|
|
}
|
|
*/
|
|
|
|
// implements mvc.Result.
|
|
func (e errorResponse) Dispatch(ctx iris.Context) {
|
|
// If u want to use mvc.Result on any method without an output return value
|
|
// go for it:
|
|
//
|
|
view := mvc.View{Code: e.Code, Data: e} // use Code and Message as the template data.
|
|
switch e.Code {
|
|
case iris.StatusNotFound:
|
|
view.Name = "404"
|
|
default:
|
|
view.Name = "500"
|
|
}
|
|
view.Dispatch(ctx)
|
|
|
|
// Otherwise use ctx methods:
|
|
//
|
|
// ctx.StatusCode(e.Code)
|
|
// switch e.Code {
|
|
// case iris.StatusNotFound:
|
|
// // use Code and Message as the template data.
|
|
// if err := ctx.View("404.html", e)
|
|
// default:
|
|
// if err := ctx.View("500.html", e)
|
|
// }
|
|
}
|
|
|
|
type controller struct{}
|
|
|
|
type user struct {
|
|
ID uint64 `json:"id"`
|
|
}
|
|
|
|
func (c *controller) GetBy(userid uint64) mvc.Result {
|
|
if userid != 1 {
|
|
return errorResponse{
|
|
Code: iris.StatusNotFound,
|
|
Message: "User Not Found",
|
|
}
|
|
}
|
|
|
|
return mvc.Response{
|
|
Object: user{ID: userid},
|
|
}
|
|
}
|