在使用Echo框架进行web开发的时候,我们会涉及到从客户端的request里面获取请求的参数,本文我们就介绍下使用Echo框架如何从request中获取请求的参数。
第一种方式,参数在路径上(restful风格)
在实际的业务中,很多的接口会使用restful风格来进行编写,所以这时候参数在放在路径上的,我们要取值的话就需要在路径上去获取,使用Echo框架的话,我们使用Param参数来获取即可,示例如下:
//第一种restful风格的api获取参数 e.GET("/getuser/:userid", getUserByUserId) func getUserByUserId(c echo.Context) error { id := c.Param("userid") fmt.Println("getUserByUserId获取到的userid是:", id) return c.String(http.StatusOK, id) }
可以看到我们直接在context里面使用Param获取即可。
第二种方式,参数是form提交
这种方式是我们最常见的,get请求的参数是放在路径上的,post参数是放在form表单里面的,这时候获取值的话,我们使用FormValue函数来获取即可,示例如下:
//第二种是普通的get和post form取值 e.GET("/getuser1", getUserByUserId1) e.POST("/getuser2", getUserByUserId2) func getUserByUserId1(c echo.Context) error { id := c.FormValue("userid") fmt.Println("getUserByUserId1获取到的userid是:", id) return c.String(http.StatusOK, id) } func getUserByUserId2(c echo.Context) error { id := c.FormValue("userid") fmt.Println("getUserByUserId2获取到的userid是:", id) return c.String(http.StatusOK, id) }
第三种方式,参数在queryParams里面
这种方式和常见的queryparams是一样的,不管get还是post,请求的参数都是在路径上,因此这里的话,我们需要使用QueryParam来进行获取,示例如下:
//第三种是从queryParams里面取值 e.GET("/getuser3", getUserByUserId3) e.POST("/getuser4", getUserByUserId4) func getUserByUserId3(c echo.Context) error { id := c.QueryParam("userid") fmt.Println("getUserByUserId3获取到的userid是:", id) return c.String(http.StatusOK, id) } func getUserByUserId4(c echo.Context) error { id := c.QueryParam("userid") fmt.Println("getUserByUserId4获取到的userid是:", id) return c.String(http.StatusOK, id) }
第四种方式,参数为json格式的
这种方式也是最常见的,请求的参数为json-object或者json-array,因此这时候需要使用json的方式去接收,这种方式使用echo框架进行接收的话,和上面的方法不一样,这里需要使用handlefunc方法,示例如下:
//第四种是接收json格式的值 e.POST("/getuser5", getUserByUserId5Handler()) //接收传递进来的是一个数组 e.POST("/getuser6", getUserByUserId6Handler()) func getUserByUserId5Handler() echo.HandlerFunc { return func(c echo.Context) error { p := &[]User{} if err := c.Bind(p); err != nil { //这里是解析json报错了,返回错误信息 return c.String(http.StatusInternalServerError, err.Error()) } //这里代表解析json正确,进行正确的逻辑处理 return c.JSON(http.StatusOK, p) } } func getUserByUserId6Handler() echo.HandlerFunc { return func(c echo.Context) error { p := &User{} if err := c.Bind(p); err != nil { //这里是解析json报错了,返回错误信息 return c.String(http.StatusInternalServerError, err.Error()) } //这里代表解析json正确,进行正确的逻辑处理 return c.JSON(http.StatusOK, p) } } type User struct { Name string `json:"name"` Age int `json:"age"` }
这里的话,我们首先需要定义一个json的类,然后再通过handlerfunc来进行return即可。
以上就是所有涉及到接收request json参数的案例,最后按照管理,附上本案例的源码,登录后即可查看
还没有评论,来说两句吧...