日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Springboot 獲取響應信息,修改響應信息

作者:Coder-CT 更新時間: 2022-02-17 編程語言

通過攔截器只能獲取到controller下的
restcontroller不能通過攔截器實現


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.http.server.ServletServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @program: 獲取響應信息  更改響應信息
 * @description:
 * @author: chen
 * @create:
 **/

@ControllerAdvice
public class ResponseBodyTest implements ResponseBodyAdvice<R> {

    private static final Logger logger = LoggerFactory.getLogger(ResponseBodyTest.class);


    @Override
    public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {

        return true;

    }


    //獲取響應信息 修改響應  restResult.put覆蓋響應消息
    @Override
    public R beforeBodyWrite(R restResult, MethodParameter methodParameter,
                             MediaType mediaType,
                             Class<? extends HttpMessageConverter<?>> aClass,
                             ServerHttpRequest serverHttpRequest,
                             ServerHttpResponse serverHttpResponse) {
        //System.out.println("測試返回");
        // 轉換對象
        HttpServletRequest request = ((ServletServerHttpRequest) serverHttpRequest).getServletRequest();
        HttpServletResponse response = ((ServletServerHttpResponse) serverHttpResponse).getServletResponse();

        logger.info("____________________________________________________________");
        logger.info(methodParameter.getDeclaringClass().getName());
        if ((Boolean) restResult.get("success")){
            logger.info(methodParameter.getMethod().getName()+"方法返回值:"+restResult.get("msg"));
        }else {
            logger.error(methodParameter.getMethod().getName()+"方法返回值:"+restResult.get("msg"));
        }
        logger.info("------------------------------------------------------------");
        //修改響應信息  直接覆蓋掉就可以了 響應類是map
        restResult.put("msg","返回信息")
        return restResult;
    }
}


響應類

package com.molomessage.message.sys.utils;
import java.util.HashMap;
import java.util.Map;

/**
 * 返回數據
 * 
 * @author chen
 * @date
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	public R() {
		put("success",true);
		put("code", 0);
		put("msg","操作成功");
	}
	
	public static R error() {
		return error(500, "未知異常,請聯系管理員");
	}
	public static R error(String msg) {
	    return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		r.put("success",false);

		return r;
	}

	public static R ok(String msg, Object obj) {
		R r = new R();
		r.put("success",true);
		r.put("msg", msg);
		r.put("data", obj);
		return r;
	}
	public static R ok(String msg) {
		R r = new R();
		r.put("success",true);
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

原文鏈接:https://blog.csdn.net/weixin_51216079/article/details/120082105

欄目分類
最近更新