Iris框架的处理post/get请求

 

处理post请求

添加商品

前端v

<form action="/product/add"  method="post" >
<label class="col-sm-3 control-label">商品名称</label>
<div class="col-sm-6">
    <input type="text" class="form-control" name="ProductName"  >
</div>

控制器c

注册控制器,使用了分组路由
productRepository := repositories.NewProductManager("product", db)
productSerivce := services.NewProductService(productRepository)
productParty := app.Party("/product")
product := mvc.New(productParty)
product.Register(ctx, productSerivce)
product.Handle(new(controllers.ProductController))

Context是iris框架中的一个路由上下文对象 

在该Context的接口定义中可以发现,包含很多处理请求及数据返回的操作。在iris框架内,提供给开发者一个ContextPool,即存储上下文变量Context的管理池,该变量池中有多个context实例,可以进行复用。每次有新请求,就会获取一个新的context变量实例,来进行请求的路由处理。比如能够获取到表单中的数据,能够进行重定向

控制器编写
type ProductController struct {
	Ctx            iris.Context
	ProductService services.IProductService
}
func (p *ProductController) PostAdd() {
	product := &datamodels.Product{}
	p.Ctx.Request().ParseForm()
        //创建decoder的实例
        //将前端表单里的数据解码
	dec := common.NewDecoder(&common.DecoderOptions{TagName: "shop"})
	if err := dec.Decode(p.Ctx.Request().Form, product); err != nil {
		p.Ctx.Application().Logger().Debug(err)
	}
	_, err := p.ProductService.InsertProduct(product)
	if err != nil {
		p.Ctx.Application().Logger().Debug(err)
	}
	p.Ctx.Redirect("/product/all")
}

 

处理GET请求

控制器

func (p *ProductController) GetManager() mvc.View {
        //获取到URL参数
	idString := p.Ctx.URLParam("id")
	id, err := strconv.ParseInt(idString, 10, 16)
	if err != nil {
		p.Ctx.Application().Logger().Debug(err)
	}
	product, err := p.ProductService.GetProductByID(id)
	if err != nil {
		p.Ctx.Application().Logger().Debug(err)
	}

	return mvc.View{
		Name: "product/manager.html",
		Data: iris.Map{
			"product": product,
		},
	}
}

前端

<input type="text" class="form-control" name="ProductName" value="{{.product.ProductName}}">

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值