前沿:跟着ccmouse(imooc)的课程将go的基础知识学习完毕之后,开始想着做点东西,因为笔者从事的Java领域的后端开发。所以很容易的想着写个博客啊管理什么的。所以在比较了Gin和beego几个框架之后,选定beego先行练手。
基本上先是按照beego官方的文档过了一遍,因为最近升级了beegoV2,文档似乎还没有完全更新。尤其是在beego的mvc设计-controller-请求数据处理这一节,关于form提交与ajax提交,样例不是很全,然后文档呢,相对来说不是太细。
1.表单提交(这个怪我,没有看到注意就开始下手了,传递了id,tag就是没传递name)
表单传值样例
前端:
<div>
<form action="/manage" method="POST">
<input id="Id" name="Id" type="text">
<input id="Content" name="Content" type="text">
<input type="submit">
</form>
</div>
后端:
要注意的是,一定要传值name,然后名称要和后端接收的实体类一致,如果直接解析到struct的话。(这里的this 就是 controller),可以直接使用GetString()或者 getxxxx()获取
id := this.GetString("Id")
content := this.GetString("Content")
fmt.Println(id)
fmt.Println(content)
Json传值样例:
前端:
<script>
$("#sBtn").click(function (){
console.log("button clicked!")
$(function(){
//请求参数
var list = {"id":"1111"};
//
$.ajax({
//请求方式
type : "Post",
//请求的媒体类型
// contentType: "application/json; charset=utf-8", # 这样写无效
dataType:"JSON", # 要注意这样写
//请求地址
url : "http://localhost:8080/manage/",
//数据,json字符串
// data : JSON.stringify(list),
data: {"Id":1111,"Content":"aaa"}, # 这里只是示意
//请求成功
success : function(result) {
console.log("2222222222222222")
console.log("-------"+this.data)
console.log(result);
},
//请求失败,包含具体的错误信息
error : function(e){
console.log(e.status);
console.log(e.responseText);
}
});
});
});
</script>
注意点:1.dataType一定要写,即dataType:"POST",这里简单的以ajax为例。
后端:
type MyData struct {
Id int
Content string
}
func (this *ManageController) Post() {
id := this.GetString("Id")
content := this.GetString("Content")
fmt.Println(id)
fmt.Println(content)
var data = new(MyData)
err := this.ParseForm(&data)
if err != nil {
fmt.Println("参数为空!")
}
var data2 MyData
json.Unmarshal(this.Ctx.Input.RequestBody, &data2)
fmt.Println(data2)
mystrct := new(MyData)
mystrct.Id = 111
mystrct.Content = "这是一个很寂寞的天下着有些伤心的雨"
this.Data["json"] = &mystrct
this.ServeJSON()
}
关于官方案例里边的models.Object() 我是没找到,然后目前不清楚这个models.Object()哪里来的。