File: mvc/session-controller/main.go
~~~
// +build go1.9
package main
import (
"fmt"
"time"
"github.com/kataras/iris"
"github.com/kataras/iris/mvc"
"github.com/kataras/iris/sessions"
)
// VisitController处理根路由.
type VisitController struct {
// 当前的请求会话,
//它的初始化是由我们添加到的依赖函数发生的 `visitApp`.
Session *sessions.Session
//从MVC绑定的time.time,
// 绑定字段的顺序无关紧要.
StartTime time.Time
}
// Get handles
// Method: GET
// Path: http://localhost:8080
func (c *VisitController) Get() string {
//它将整数的“visits”值递增1",
//如果带有“访问”键的条目不存在,它将为您创建.
visits := c.Session.Increment("visits", 1)
// 写下当前的,更新的访问.
since := time.Now().Sub(c.StartTime).Seconds()
return fmt.Sprintf("%d visit(s) from my current session in %0.1f seconds of server's up-time",
visits, since)
}
func newApp() *iris.Application {
app := iris.New()
sess := sessions.New(sessions.Config{Cookie: "mysession_cookie_name"})
visitApp := mvc.New(app.Party("/"))
// 绑定当前* session.Session,这是必需的 `VisitController.Session`
// 和时间。现在time.Now() to the `VisitController.StartTime`.
visitApp.Register(
// 如果依赖是一个接受的函数
// 一个Context并返回一个值
// 然后控制器解析该函数的结果类型
// 并且在每个请求上它将使用其Context调用该函数
// 并将结果(the* sessions.Session)设置为控制器的字段.
//
// 如果在没有字段或函数的输入参数的情况下注册依赖项
// 消费者然后在服务器运行之前忽略这些依赖项,
// 所以你可以绑定许多dependecies并在不同的控制器中使用它们.
sess.Start,
time.Now(),
)
visitApp.Handle(new(VisitController))
return app
}
func main() {
app := newApp()
// 1. 打开浏览器(不在私人模式下)
// 2. navigate to http://localhost:8080
// 3.有时刷新页面
// 4. 关闭浏览器
// 5. 重新打开浏览器并重新播放2。
app.Run(iris.Addr(":8080"), iris.WithoutVersionChecker)
}
~~~
File: mvc/session-controller/main_test.go
~~~
package main
import (
"testing"
"github.com/kataras/iris/httptest"
)
func TestMVCSession(t *testing.T) {
e := httptest.New(t, newApp(), httptest.URL("http://example.com"))
e1 := e.GET("/").Expect().Status(httptest.StatusOK)
e1.Cookies().NotEmpty()
e1.Body().Contains("1 visit")
e.GET("/").Expect().Status(httptest.StatusOK).
Body().Contains("2 visit")
e.GET("/").Expect().Status(httptest.StatusOK).
Body().Contains("3 visit")
}
~~~
- api文档
- yaag
- 认证
- 认证基本
- oauth2
- 缓存
- 客户端
- 简单的
- 配置
- 配置文件
- tml文件
- yaml文件
- 功能
- 处理程序
- Negroni Like
- http
- Real Usecase Raven
- cookies
- Basic
- 安全cookie
- 实验程序
- casbin
- 云监视
- cors
- csrf
- jwt
- 新文学
- Casbin
- 文件服务器
- Hero
- http监听
- http请求
- HTTP Responsewriter
- Miscellaneous
- MVC
- mvc概观
- 中间件
- Hello World
- 登陆
- Session 控制器
- Singleton
- MVC基本
- ORM
- xorm
- 概况
- 路由
- 概观
- 自定义上下文
- 自定义包装
- 动态路径
- 相反
- HTTP错误
- 路由状态
- 路由基本
- Sessions
- 构建
- 子域
- 重定向
- 万维网
- Single
- 通配符
- 多域名
- 测试
- 教程
- 视图
- Template Html 0
- Template Html 1
- Template Html 2
- Template Html 3
- Template Html 4
- Webassembly
- Websocket
