Если мы хотим записать информацию о запросах и ответах, мы можем реализовать декоратор на контроллере, как это сделал Django ниже
def log_service(func):
"""
Decorator that logs the input and output.
"""
@wraps(func)
def wrapper(*args, **kwargs):
log = Logging()
request = args[1]
log.path = request.path
log.ip_address = request.META['REMOTE_ADDR']
log.user_agent = request.headers['User-Agent']
if request.headers.get('Referer'):
log.referer = request.headers['Referer']
log.method = request.method
if request.user.username:
log.user = request.user
log.query_string = request.META['QUERY_STRING']
log.post_data = request.data
log.server = request.META['SERVER_NAME']
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
log.process_time = end_time - start_time
msg = result.data['msg']
log.msg = msg
log.save()
return result
return wrapper
Кажется, Beego предоставляет фильтр, который поможет нам решить эту проблему следующим образом:
beego.InsertFilter("/api/search/detail_page", beego.AfterExec, middleware.TrackPageItem, false)
И мы можем получить доступ к объекту запроса и ответа через context.Context
объект, как показано ниже:
var TrackUserBehaviour = func(ctx *context.Context){
queryString := make(map[string]string)
referer := ""
path := ctx.Request.URL.Path
}
Проблема в том, что объект ответа в context.Context
непредоставить ответную информацию. Итак, если мне нужна информация, содержащаяся в ответе, как ее получить ??