beego接收参数,返回json\xml

package routers

import (
	beego "github.com/beego/beego/v2/server/web"
	"p001/controllers"
)

func init() {
	beego.Router("/", &controllers.MainController{})
	beego.Router("/hello/rjson", &controllers.HelloController{}, "get:ReturnJSON")
	beego.Router("/hello/json", &controllers.HelloController{}, "post:Json")
	beego.Router("/hello/xml", &controllers.HelloController{}, "post:Xml")
}
package controllers

import (
   "encoding/json"
   "encoding/xml"
   "fmt"
   "github.com/beego/beego/v2/core/validation"
   beego "github.com/beego/beego/v2/server/web"
)

type Student struct {
   Id    string   `json:"id" form:"id"`
   Name  string   `json:"name" form:"name"`
   Age   int      `json:"age" form:"age"`
   Hobby []string `json:"hobby" form:"hobby"`
}
type HelloController struct {
   beego.Controller
}


func (c *HelloController) Fparam() {
   var r Student = Student{}
   //r.Id = c.GetString("id")
   //r.Name = c.GetString("name")
   //r.Age, _ = c.GetInt("age")
   //r.Hobby = c.GetStrings("hobby")

   c.ParseForm(&r)
   // 2.初始化validation
   valid := validation.Validation{}
   valid.Required(r.Id, "id").Message("id不能为空")
   if valid.HasErrors() {
      er := ""
      for _, err := range valid.Errors { // 循环打印错误
         er = er + "\n" + err.Message
      }
      c.Ctx.WriteString(er)
      return
   }
   fmt.Println(r)
   //c.SetSession("sessionKey", "session value")
   bytes, _ := json.Marshal(r)
   c.Ctx.WriteString(string(bytes))
}

// 返回json格式数据
func (c *HelloController) ReturnJSON() {
   var r Student = Student{
      Id:   "1",
      Name: "zhansan",
      Age:  18,
   }
   c.Data["json"] = r //key必须是json
   c.ServeJSON()

}

/**


    18
    战三
    18
    1
    2

*/
// 在app.conf里面配置copyrequestbody=true,解析xml
func (c *HelloController) Xml() {
   xmlb := c.Ctx.Input.RequestBody
   xmlstr := string(xmlb)
   fmt.Println(xmlstr)
   s := Student{}
   //json.Unmarshal(json, &s)
   err := xml.Unmarshal(xmlb, &s)
   if err != nil {

   } else {
      c.Data["json"] = s
      c.ServeJSON()
   }
}


// 在app.conf里面配置copyrequestbody=true,解析xml
/**
{
    "id": "18",
    "name": "战三",
    "age": 18,
    "hobby": [
        "1",
        "2"
    ]
}
*/
func (c *HelloController) Json() {
	jsonb := c.Ctx.Input.RequestBody
	jsonstr := string(jsonb)
	fmt.Println(jsonstr)
	s := Student{}
	//json.Unmarshal(json, &s)
	err := json.Unmarshal(jsonb, &s)
	if err != nil {

	} else {
		c.Data["json"] = s
		c.ServeJSON()
	}
}

// beego.Router("/hello/:id/:name", &controllers.HelloController{}, "get:PathId")
// http://localhost:8080/hello/12/战三
func (c *HelloController) PathId() {
	var id string = c.Ctx.Input.Param(":id")
	var name string = c.Ctx.Input.Param(":name")
	c.Ctx.WriteString("id:" + id + " name:" + name)
}

// beego.Router("/hello/cms_:id([0-9]+).html", &controllers.HelloController{}, "get:RegPathId")
// http://localhost:8080/hello/cms_12.html
func (c *HelloController) RegPathId() {
	var id string = c.Ctx.Input.Param(":id")
	var name string = c.Ctx.Input.Param(":name")
	c.Ctx.WriteString("id:" + id + " name:" + name)
}

beego内置了session模块,目前session模块支持后端引擎包括memory,cookie,file,mysql,redis,couchbase,memcache,postgres,用户也可以根据相应的interface实现自己的引擎。

        默认引擎是memory(内存)

      关于 Session 模块使用中的一些参数设置:

  • beego.BConfig.WebConfig.Session.SessionOn

    设置是否开启 Session,默认是 false,配置文件对应的参数名:sessionon。

  • beego.BConfig.WebConfig.Session.SessionProvider

    设置 Session 的引擎,默认是 memory,目前支持还有 file、mysql、redis 等,配置文件对应的参数名:sessionprovider。

  • beego.BConfig.WebConfig.Session.SessionName

    设置 cookies 的名字,Session 默认是保存在用户的浏览器 cookies 里面的,默认名是 beegosessionID,配置文件对应的参数名是:sessionname。

  • beego.BConfig.WebConfig.Session.SessionGCMaxLifetime

    设置 Session 过期的时间,默认值是 3600 秒,配置文件对应的参数:sessiongcmaxlifetime。

  • beego.BConfig.WebConfig.Session.SessionProviderConfig

    设置对应 file、mysql、redis 引擎的保存路径或者链接地址,默认值是空,配置文件对应的参数:sessionproviderconfig。

  • beego.BConfig.WebConfig.Session.SessionHashFunc

    默认值为sha1,采用sha1加密算法生产sessionid

  • beego.BConfig.WebConfig.Session.SessionHashKey

    默认的key是beegoserversessionkey,建议用户使用的时候修改该参数

  • beego.BConfig.WebConfig.Session.SessionCookieLifeTime

    设置cookie的过期时间,cookie是用来存储保存在客户端的数据。

  • GetSession("kname")--获取session

    SetSession("kname","kvalue")--设置session

    DelSession("kname")--删除session

你可能感兴趣的:(golang,json,开发语言,golang,后端)