美文网首页
iris 框架依赖注入使用

iris 框架依赖注入使用

作者: 花荣8 | 来源:发表于2022-06-20 00:01 被阅读0次

iris 框架依赖注入使用

介绍

golang开发web应用一般会选个web框架开始开发,web框架提供了丰富的功能和特性,非常方便易用

golang官方提供的http包也可以快速启动http服务,但它提供的功能很少,不支持请求拦截、错误处理、日志处理、请求参数校验等常见的开发问题

golang的web框架很多,大部分也都很好用,像iris、gin、echo等在github上都是20k+star的项目

今天介绍一下iris这个框架,为什么选这个框架,因为这个框架有个非常好的特性——依赖注入(DI)

github地址:https://github.com/kataras/iris

快速开始

下面是官方的例子,简单几行代码就可以启动http服务


package main

import "github.com/kataras/iris/v12"

func main() {
  app := iris.New()
  app.Use(iris.Compression)

  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Hello <strong>%s</strong>!", "World")
  })

  app.Listen(":8080")}

iris还支持其他很多特性,比如:

  • • HTTP/2(推送,甚至是嵌入式数据)

  • • 中间件(Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)

  • • API版本管理

  • • MVC

  • • Websockets

  • • gRPC

  • • 独特的路由器,以动态路径作为参数,具有标准类型,如:uuid, :string, :int...和创建自己的能力

  • 等,详情可以看官方文档

    iris提供的这些功能,大部分web框架也都有支持

    使用依赖注入(dependency injection

    type SignRequestModel struct {
        Email string `json:"email"`
        PassWord string `json:"pass_word"`
    }

    //SignUp方法依赖db,req对象自动解析http请求的参数(application/json)
    func SignUp(db *gorm.DB, req SignRequestModel) interface{} {
        user := &repository.User{}
        tx := db.Model(&repository.User{}).Where(&repository.User{Email: req.Email}).First(user)
        if err := tx.Error; err != nil {
            return util.FailureResponse(err)
        }
        if user == nil {
            //新注册
        } else {
            //已注册
        }
        return util.SuccessResponse("ok")
    }

    func container(api *iris.APIContainer) {
        //注入依赖
        api.RegisterDependency(db)
        api.Post("/sign/up", SignUp)
    }

    func main() {
        app := iris.New()
        app.Use(recover.New())
        app.Use(irisLog.New())

        //非mvc,函数调用
        app.Party("/api/v1").ConfigureContainer(container)

        port := 8080
        app.Listen(fmt.Sprintf(":%d", port), iris.WithOptimizations)
    }

    使用iris的依赖注入时,只需把依赖的对象通过 RegisterDependency 方法注册就可以使用了,非常方便简单

    riis支持自动注入的对象还有很多,比如:

    TypeMaps To*mvc.ApplicationCurrent MVC Applicationiris.ContextCurrent Iris Context*sessions.SessionCurrent Iris Sessioncontext.Contextctx.Request().Context()*http.Requestctx.Request()http.ResponseWriterctx.ResponseWriter()http.Headerctx.Request().Headertime.Timetime.Now()string,int, int8, int16, int32, int64,uint, uint8, uint16, uint32, uint64,float, float32, float64,bool,slicePath ParameterStructRequest Body of JSON, XML, YAML, Form, URL Query, Protobuf, MsgPack

    详情参考:https://github.com/kataras/iris/wiki/dependency-injection

    tip: 如果提示ConfigureContainer 对象不存在的话,执行 github.com/kataras/iris/v12@master

    相关文章

    • iris 框架依赖注入使用

      iris 框架依赖注入使用 介绍 golang开发web应用一般会选个web框架开始开发,web框架提供了丰富的功...

    • Jetpack - Hilt

      Jetpack - Hilt依赖注入、依赖注入框架Android 常用的依赖注入框架Hilt 的简单使用 1. 依...

    • 给微软的依赖注入框架写一些扩展方法

      给微软的依赖注入框架写一些扩展方法 Intro 现在在项目里大多都是直接使用微软的依赖注入框架,而微软的注入方式比...

    • Angular 2 之七 依赖注入

      概述Angular 2使用自己的依赖注入框架并采用构造注入方式,依赖注入分两个步骤: 1) 向injector注册...

    • Google Guice依赖注入框架之Hello world

      最早接触依赖注入是使用Spring的时候,但是这个框架有点太"重"了,所以如果只是想在代码里面使用依赖注入,可以选...

    • 3.依赖注入Castle Windsor

      一、概述 ABP使用Castle Windsor框架进行依赖注入(构造器注入和属性注入)。ABP会自动将Repos...

    • Dagger2

      前言 Dagger2是首个使用生成代码完整依赖注入的框架,极大减少了使用者的编码负担 1、简单的依赖注入 首先我们...

    • [IOS架构]Swinject 依赖注入框架

      在本文中,我将介绍依赖注入的基础知识,以及如何使用Swinject框架将依赖注入应用到iOS项目中。 什么是依赖 ...

    • Autofac 依赖注入框架 使用

      简介 Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等...

    • 依赖注入及Dagger2框架简介

      依赖注入简介 在介绍Dagger框架之前我们先来看看依赖注入(Dependence Injection),依赖注入...

    网友评论

        本文标题:iris 框架依赖注入使用

        本文链接:https://www.haomeiwen.com/subject/oaudvrtx.html