package rest import ( "encoding/json" "fmt" "net/http" ) //@Service type FootprintService struct { Bean footprintDao *FootprintDao userDao *UserDao } //初始化方法 func (this *FootprintService) Init() { this.Bean.Init() //手动装填本实例的Bean. 这里必须要用中间变量方可。 b := CONTEXT.GetBean(this.footprintDao) if b, ok := b.(*FootprintDao); ok { this.footprintDao = b } b = CONTEXT.GetBean(this.userDao) if b, ok := b.(*UserDao); ok { this.userDao = b } } //获取某个文件的详情,会把父级依次倒着装进去。如果中途出错,直接抛出异常。 func (this *FootprintService) Detail(uuid string) *Footprint { footprint := this.footprintDao.CheckByUuid(uuid) return footprint } //记录访问记录 func (this *FootprintService) Trace(writer http.ResponseWriter, request *http.Request) { //手动装填本实例的Bean. 这里必须要用中间变量方可。 var footprintDao *FootprintDao b := CONTEXT.GetBean(footprintDao) if b, ok := b.(*FootprintDao); ok { footprintDao = b } fmt.Printf("Host = %s Uri = %s Path = %s RawPath = %s RawQuery = %s \n", request.Host, request.RequestURI, request.URL.Path, request.URL.RawPath, request.URL.RawQuery) params := make(map[string][]string) //POST请求参数 values := request.PostForm for key, val := range values { params[key] = val } //GET请求参数 values1 := request.URL.Query() for key, val := range values1 { params[key] = val } //用json的方式输出返回值。 paramsString := "{}" paramsData, err := json.Marshal(params) if err == nil { paramsString = string(paramsData) } //将文件信息存入数据库中。 footprint := &Footprint{ SessionId: "", UserUuid: "testUserUUid", Ip: GetIpAddress(request), Host: request.Host, Uri: request.URL.Path, Params: paramsString, Cost: 0, Success: true, } footprint = footprintDao.Create(footprint) }