美文网首页
Spring boot 统一返回

Spring boot 统一返回

作者: 没有怎么办 | 来源:发表于2022-04-21 11:02 被阅读0次

package com.ku.config;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.ku.core.common.api.Result;

import org.springframework.core.MethodParameter;

import org.springframework.http.MediaType;

import org.springframework.http.server.ServerHttpRequest;

import org.springframework.http.server.ServerHttpResponse;

import org.springframework.web.bind.annotation.RestControllerAdvice;

import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

import java.util.LinkedHashMap;

@RestControllerAdvice

public class CommonResponseAdvice implements ResponseBodyAdvice {

    @Override

    public boolean supports(MethodParameter returnType, Class converterType) {

        return true;

    }

    @Override

    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {

        if (body instanceof LinkedHashMap) {

            LinkedHashMap map = (LinkedHashMap) body;

            if (map.get("status") != null) {

                int status = (int) map.get("status");

                if (404 == status) return Result.fail("404找不到页面");

            }

        }

        if (body instanceof String) {

            try {

                return new ObjectMapper().writeValueAsString(Result.data(body));

            } catch (JsonProcessingException e) {

                e.printStackTrace();

            }

        }

        if (body instanceof Result) {

            return body;

        }

        return  body;

    }

}

相关文章

网友评论

      本文标题:Spring boot 统一返回

      本文链接:https://www.haomeiwen.com/subject/ngsiertx.html