摘一颗星球 2025-03-30 10:59 采纳率: 50%
浏览 7

关于iris后端发送请求的问题

这是我初始化iris的代码


```go
func main() {
    //1.创建iris实例
    app := iris.New()
    //2.设置日志错误等级
    app.Logger().SetLevel("debug")
    //3.注册模板(渲染视图用)(参数:目录,模板文件后缀)
    //意思就是以这个目录下的html文件按为模板
    tmplate := iris.HTML("./backend/web/views",
        ".html").Layout("shared/layout.html").Reload(
        true)
    //4.把模板放到框架中
    app.RegisterView(tmplate)
    //5. 设置模板目录
    app.HandleDir("assets", iris.Dir("./backend/web/assets"))
    //出现异常跳转到指定页面
    app.OnAnyErrorCode(func(ctx iris.Context) {
        ctx.ViewData("message",
            ctx.Values().GetStringDefault("message", "访问的页面出错"))
        ctx.ViewLayout("")
        ctx.View("shared/error.html")
    })
    //连接数据库
    db, err := common.NewMysqlConn()
    if err != nil {
        log.Error(err)
    }
    ctx, cancel := context.WithCancel(context.Background())
    defer cancel()
    //6.注册控制器
    productRepository := repositories.NewProductManager("product", db)
    productService := services.NewProductService(productRepository)
    productParty := app.Party("/product")
    product := mvc.New(productParty)
    product.Register(ctx, productService)
    product.Handle(new(controllers.ProductController))
    //7.启动服务
    app.Run(
        iris.Addr("localhost:8080"),
        iris.WithoutServerError(iris.ErrServerClosed), //忽略iris框架的错误
        iris.WithOptimizations,
    )

}


后端定义了一个插入数据库操作的函数,当我在postman中发送请求的时候,就出现了我不太理解的情况


```go
func (p *ProductController) PostInsert() {
    log.Printf("成功进入postinsert")
    product := &datamodels.Product{}
    p.Ctx.Request().ParseForm()
    dec := common.NewDecoder(&common.DecoderOptions{TagName: "pd"})
    if err := dec.Decode(p.Ctx.Request().Form, product); err != nil {
        p.Ctx.Application().Logger().Debug(err)
    }
    log.Println(product)
    _, err := p.ProductService.Insert(product)
    if err != nil {
        p.Ctx.Application().Logger().Debug(err)
    }
    p.Ctx.Redirect("/product/all")
}

就是说我要提交一个表单类的数据上去,但是呢,一开始我提交了json数据的格式,既然这样的话当然报错,控制台先打印了“成功进入postinsert",然后就是一系列的报错了。
但是当我用表单数据提交的时候,他根本就连”成功进入postinsert"这一句都不打印了。
请问这是什么原因,求解

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-30 10:59
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    关于iris后端发送请求的问题

    你的问题是关于使用Iris框架发送请求的问题,但是你提供的代码只包含了Iris的初始化和日志设置部分,缺乏发送请求的相关代码。

    如果你想使用Postman发送请求到Iris后端,可以使用Iris的http.ListenAndServe方法来启动服务器,然后使用Postman发送请求到对应的URL。

    例如,如果你想发送一个GET请求到 /hello URL,可以使用以下代码:

    func main() {
        app := iris.New()
        app.Get("/hello", func(ctx iris.Context) {
            ctx.WriteString("Hello, World!")
        })
        app.Listen(":8080")
    }
    

    然后,在Postman中输入http://localhost:8080/hello,选择GET请求方法,点击发送按钮,就可以收到服务器返回的响应。

    如果你想发送其他类型的请求,例如POST请求,可以使用Iris的http.Post方法来处理请求。

    如果你需要更多帮助,请提供更多的代码和详细的描述。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月30日