All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.dengchen2020.core.utils.RequestUtils Maven / Gradle / Ivy

There is a newer version: 0.0.28
Show newest version
package io.github.dengchen2020.core.utils;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.io.IOException;

/**
 * 请求扩展工具类
 *
 * @author dengchen
 * @since 2023/8/22
 */
public abstract class RequestUtils extends RequestContextHolder {

    private static final Logger log = LoggerFactory.getLogger(RequestUtils.class);

    /**
     * 获取当前请求上下文属性
     */
    public static ServletRequestAttributes getCurrRequestAttributes() {
        RequestAttributes requestAttributes = getRequestAttributes();
        if (requestAttributes == null) {
            throw new RuntimeException("获取当前请求上下文属性失败");
        }
        return (ServletRequestAttributes) requestAttributes;
    }

    /**
     * 获取当前请求
     * @return
     */
    public static HttpServletRequest getCurrRequest() {
        return getCurrRequestAttributes().getRequest();
    }

    /**
     * 获取当前响应
     * @return
     */
    public static HttpServletResponse getCurrResponse() {
        return getCurrRequestAttributes().getResponse();
    }

    /**
     * 获取接口地址,包含域名、端口
     *
     * @return
     */
    public static String getPath() {
        return getPath(getCurrRequest());
    }

    /**
     * 获取接口地址,包含域名、端口
     *
     * @param request
     * @return
     */
    public static String getPath(HttpServletRequest request) {
        if (request == null) {
            return null;
        }
        String scheme = request.getScheme();
        int port = request.getServerPort();
        String path = scheme + "://" + request.getServerName();
        if ((scheme.equals("http") && (port != 80))
                || (scheme.equals("https") && (port != 443))) {
            path += ":" + request.getServerPort();
        }
        path += request.getRequestURI();
        return path;
    }

    /**
     * 解析body数据
     *
     * @return
     */
    public static String getBody() {
        return getBody(getCurrRequest());
    }

    /**
     * 解析body数据
     *
     * @param request
     * @return
     */
    public static String getBody(HttpServletRequest request) {
        if (request == null) {
            return null;
        }
        try {
            return new String(request.getInputStream().readAllBytes());
        } catch (IOException e) {
            log.error("body数据解析异常:{}", e.toString());
        }
        return null;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy