MVC介绍
Iris对MVC(模型视图控制器)模式有一流的支持,您在其他任何地方都找不到这些东西
Iris web框架支持请求数据、模型、持久数据和以最快的速度执行的绑定。
特性
支持所有HTTP方法,例如,如果想要提供GET,那么控制器应该有一个名为Get()的函数,您可以定义多个方法函数在同一个Controller中提供。
通过BeforeActivation自定义事件回调,每个控制器,将自定义控制器的struct的方法作为具有自定义路径(即使使用正则表达式参数化路径)的处理程序提供。
示例代码:
Controller结构中的持久性数据(在请求之间共享数据),通过定义对依赖项的服务或具有Singleton控制器作用域。
共享控制器之间的依赖关系或在父MVC应用程序上注册它们,并能够在Controller内的BeforeActivation可选事件回调中修改每个控制器的依赖关系,即func(c * MyController)BeforeActivation(b mvc.BeforeActivation){b.Dependencies ()add/remove(…)}。
访问Context作为控制器的字段(没有手动绑定是neede),即Ctx iris.Context或通过方法的输入参数,即func(ctx iris.Context,otherArguments …)。
可选的BeginRequest(ctx)函数在方法执行之前执行任何初始化,对调用中间件或许多方法使用相同的数据集合很有用。可选的EndRequest(ctx)函数,用于在执行任何方法后执行任何终结。
继承,递归,参见我们的mvc.SessionController,它将Session sessions.Session和Manager sessions.Sessions作为嵌入字段,由其BeginRequest填充,在这里。这只是一个示例,您可以使用从管理器的Start作为动态依赖关系返回到MVC应用程序的sessions.Session,即mvcApp.Register(sessions.New(sessions.Config {Cookie:“iris_session_id”})。 )。
通过控制器方法的输入参数访问动态路径参数,不需要绑定。当您使用Iris的默认语法来解析来自控制器的处理程序时,您需要使用By字来为方法添加后缀,大写是一个新的子路径。例: 如这种形式 mvc.New(app.Party("/user")).Handle(new(user.Controller)) 则:
- func(*Controller) Post() - POST:/user.
- func(*Controller) GetLogin() - GET:/user/login
- func(*Controller) PostLogin() - POST:/user/login
- func(*Controller) PostProfileFollowers() - POST:/user/profile/followers
- func(*Controller) GetBy(id int64) - GET:/user/{param:long}
func(*Controller) PostBy(id int64) - POST:/user/{param:long}这样也是哦 mvc.New(app.Party("/profile")).Handle(new(profile.Controller))
func(*Controller) GetByWildard(path string) - GET:/assets/{param:path}方法函数接收器支持的类型:int,int64,bool和string。
通过输出参数响应,可选,即
当mvc.Result是一个interface时,只包含该函数::Dispatch(ctx iris.Context)
使用Iris MVC进行代码重用
如果您不熟悉后端Web开发,请首先阅读有关MVC架构模式的内容,一个好的开始就是。维基百科文章
快速MVC教程第1部分
此示例等同于https://github.com/kataras/iris/blob/master/_examples/hello-world/main.go
似乎你必须编写额外的代码并不值得,但请记住,这个例子没有使用iris mvc功能,比如Model,Persistence或View引擎都没有Session,它对于学习目的来说非常简单,可能你在你的应用程序的任何地方都不会使用简单的控制器。
在我的个人笔记本电脑上,在每个20MB吞吐量的“/ hello”路径上使用MVC的这个例子的成本是每个20MB吞吐量大约2MB,大多数应用程序都可以容忍,但你可以选择最适合你的Iris,低级处理程序:性能或高级控制器:在大型应用程序上更易于维护和更小的代码库。
在控制器中以HTTP方法(Get,Post,Put,Delete …)为前缀的每个导出的func都可以作为HTTP端点调用。在上面的示例中,所有func都将一个字符串写入响应。请注意每种方法之前的注释。
HTTP端点是Web应用程序中的可定位URL,例如http:// localhost:8080 / helloworld,并结合使用的协议:HTTP,Web服务器的网络位置(包括TCP端口):localhost:8080和目标URI / helloworld。
第一条评论声明这是一个HTTP GET方法,它通过将“/ helloworld”附加到基本URL来调用。第三个注释指定通过将“/ helloworld / welcome”附加到URL来调用的HTTP GET方法。
单击到“movieMVC应用程序”子部分。