Hero Basic

目录结构

主目录basic

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "github.com/kataras/iris"
  4. "github.com/kataras/iris/hero"
  5. )
  6. func main() {
  7. app := iris.New()
  8. // 1.直接把hello函数转化成iris请求处理函数
  9. helloHandler := hero.Handler(hello)
  10. app.Get("/{to:string}", helloHandler)
  11. // 2.把结构体实例注入hero,在把在结构体方法转化成iris请求处理函数
  12. hero.Register(&myTestService{
  13. prefix: "Service: Hello",
  14. })
  15. helloServiceHandler := hero.Handler(helloService)
  16. app.Get("/service/{to:string}", helloServiceHandler)
  17. // 3.注册一个iris请求处理函数,是以from表单格式x-www-form-urlencoded数据类型,以LoginForm类型映射
  18. // 然后把login方法转化成iris请求处理函数
  19. hero.Register(func(ctx iris.Context) (form LoginForm) {
  20. //绑定from方式提交以x-www-form-urlencoded数据格式传输的from数据,并返回相应结构体
  21. ctx.ReadForm(&form)
  22. return
  23. })
  24. loginHandler := hero.Handler(login)
  25. app.Post("/login", loginHandler)
  26. // http://localhost:8080/your_name
  27. // http://localhost:8080/service/your_name
  28. app.Run(iris.Addr(":8080"))
  29. }
  30. func hello(to string) string {
  31. return "Hello " + to
  32. }
  33. type Service interface {
  34. SayHello(to string) string
  35. }
  36. type myTestService struct {
  37. prefix string
  38. }
  39. func (s *myTestService) SayHello(to string) string {
  40. return s.prefix + " " + to
  41. }
  42. func helloService(to string, service Service) string {
  43. return service.SayHello(to)
  44. }
  45. type LoginForm struct {
  46. Username string `form:"username"`
  47. Password string `form:"password"`
  48. }
  49. func login(form LoginForm) string {
  50. return "Hello " + form.Username
  51. }

提示

Handler接口有一个handler函方法,它可以接受任何匹配的输入参数使用HeroDependencies和任何输出结果; 像stringintstringint),自定义结构,结果(查看|响应)以及您可以想象的任何内容。它返回一个标准的iris/context.Handler,它可以在Iris应用程序的任何地方使用,作为中间件或简单路由处理程序或子域的处理程序