博客
关于我
go框架bee前后端数据交互的几种方式
阅读量:110 次
发布时间:2019-02-26

本文共 3377 字,大约阅读时间需要 11 分钟。

一、获取url上的query参数

  • 1、url类型

    http:xxx:8080/person?name=hell&age=20
  • 2、后端中定义路由

    func init() {         beego.Router("/person", &person.PersonController{     })}
  • 3、在后端中获取参数

    package personimport (	"fmt"	"github.com/astaxie/beego")type PersonController struct {     	beego.Controller}//定义get请求func (c *PersonController) Get() {     	//方式一	name1 := c.GetString("name")	age1 := c.GetString("age")	fmt.Println("方式一", name1, age1)	//方式二	name2 := c.Input().Get("name")	age2 := c.Input().Get("age")	fmt.Println("方式二", name2, age2)	c.TplName = "person.html"}

二、获取url上的params参数

  • 1、浏览器上url方式

    http:xx:8080/person/10
  • 2、定义路由的时候

    func init() {         beego.Router("/", &controllers.MainController{     })    //后端通过接收id的方式来接收数据?:id:int也可以这样,那么只能接收一个int类型的数据    beego.Router("/person/?:id", &person.PersonController{     })}
  • 3、在控制器上接收数据

    注意要写**:id**,不是直接写id

    //定义get请求func (c *PersonController) Get() {     	//方式一	id1 := c.GetString(":id")	fmt.Println("方式一", id1)		//方式二	id3 := c.Ctx.Input.Param(":id")	fmt.Println("方式三", id3)  // 方式三,直接接收多个参数,一个map  params := c.Ctx.Input.Params()	c.TplName = "person.html"}

三、前端使用post表单提交数据

  • 1、定义一个简单的form表单

  • 2、定义路由

    func init() {       	// get请求会到get中,post请求会到post中    beego.Router("/post", &post.PostControllers{     })}
  • 3、定义控制器

    package postimport (	"fmt"	"github.com/astaxie/beego")type PostControllers struct {     	beego.Controller}func (c *PostControllers) Get() {       c.TplName = "post.html"}func (c *PostControllers) Post() {     	//方式一	username := c.GetString("username")	password := c.GetString("password")	fmt.Println("方式一获取参数", username, password)	//方式二	username1 := c.Input().Get("username")	password1 := c.Input().Get("password")	fmt.Println("第二种方式", username1, password1)	c.TplName = "test.tpl"}

四、post提交数据解析到结构体

  • 1、前端静态代码

  • 2、后端定义一个接收数据的结构体

    // 这里使用的是form表单接收的方式,就要定义form,方便前端传递过来的是username,在go语言中使用UserNametype FormData struct {     	UserName string `form:"username"`	Password string `form:"password"`	Gender int `form:"gender"`	Price float64 `form:"price"`	IsCheck bool `form:"isCheck"`}
  • 3、在post中接收数据请求,然后存储到结构体中

    func (c *PostControllers) Post() {     	// 定义一个结构体	formData := FormData{     }	err := c.ParseForm(&formData)	if err != nil {     		fmt.Println("解析错误")	}	fmt.Println(formData)	c.TplName ="test.tpl"}

五、前后端进行json数据交付

  • 1、要在配置文件中开启

    // conf/app.conf文件中加上这句copyrequestbody = true
  • 2、定义一个结构体用来接收数据的

    //定义一个学生的结构体type Student struct {     	Name   string `json:"name"`	Gender string `json:"gender"`	Age    int    `json:"age"`}
  • 3、定义post的控制器接收数据

    func (c *StudentControllers) Post() {     	var student Student	data := c.Ctx.Input.RequestBody // 二进制的json数据	//将二进制的json解析到结构体中	err := json.Unmarshal(data, &student)	if err != nil {     		fmt.Println("获取数据错误")	}	fmt.Println(student, "接收的数据")	//注意这里必须返回一个map	result := map[string]string{     "code": "200", "message": "成功"}	c.Data["json"] = result	//定义返回json	c.ServeJSON()}
  • 4、用postman调试接口

转载地址:http://tjvf.baihongyu.com/

你可能感兴趣的文章
Node JS: < 二> Node JS例子解析
查看>>
Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime(93)解决
查看>>
Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
查看>>
Node 裁切图片的方法
查看>>
node+express+mysql 实现登陆注册
查看>>
Node+Express连接mysql实现增删改查
查看>>
node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
查看>>
Node-RED中Button按钮组件和TextInput文字输入组件的使用
查看>>
vue3+Ts 项目打包时报错 ‘reactive‘is declared but its value is never read.及解决方法
查看>>
Node-RED中Switch开关和Dropdown选择组件的使用
查看>>
Node-RED中使用exec节点实现调用外部exe程序
查看>>
Node-RED中使用function函式节点实现数值计算(相加计算)
查看>>
Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
查看>>
Node-RED中使用JSON数据建立web网站
查看>>
Node-RED中使用json节点解析JSON数据
查看>>
Node-RED中使用node-random节点来实现随机数在折线图中显示
查看>>
Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
查看>>
Node-RED中使用node-red-contrib-image-output节点实现图片预览
查看>>
Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
查看>>
Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
查看>>