You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring 6中如何检测REST API请求来自移动端还是PC端

Spring 6 检测移动端/PC端请求的替代方案

由于Spring 6移除了org.springframework.mobile包,你可以通过以下两种常用方式实现设备类型检测:

1. 手动解析User-Agent请求头

HTTP请求的User-Agent头包含客户端设备的标识信息,你可以通过检查其中的关键词来判断设备类型:

import jakarta.servlet.http.HttpServletRequest;

public class DeviceDetectionUtil {
    public static boolean isMobileOrTablet(HttpServletRequest request) {
        String userAgent = request.getHeader("User-Agent");
        if (userAgent == null) {
            return false;
        }
        // 统一转为小写避免大小写匹配问题
        userAgent = userAgent.toLowerCase();
        // 匹配常见移动端、平板设备的关键词
        String[] mobileKeywords = {"android", "iphone", "ipad", "windows phone", "mobile", "tablet", "touch"};
        for (String keyword : mobileKeywords) {
            if (userAgent.contains(keyword)) {
                return true;
            }
        }
        return false;
    }
}

使用时直接调用工具类方法,和你原有的逻辑保持一致:

if (DeviceDetectionUtil.isMobileOrTablet(request)) {
    return true;
}

2. 使用第三方User-Agent解析库

如果需要更精准的设备分类(比如区分平板和手机、识别具体设备品牌),可以用成熟的第三方库user-agent-utils:

添加Maven依赖

<dependency>
    <groupId>eu.bitwalker</groupId>
    <artifactId>UserAgentUtils</artifactId>
    <version>1.21</version>
</dependency>

代码示例

import eu.bitwalker.useragentutils.DeviceType;
import eu.bitwalker.useragentutils.UserAgent;
import jakarta.servlet.http.HttpServletRequest;

public class DeviceDetectionUtil {
    public static boolean isMobileOrTablet(HttpServletRequest request) {
        String userAgentStr = request.getHeader("User-Agent");
        UserAgent userAgent = UserAgent.parseUserAgentString(userAgentStr);
        DeviceType deviceType = userAgent.getOperatingSystem().getDeviceType();
        return deviceType == DeviceType.MOBILE || deviceType == DeviceType.TABLET;
    }
}

这个库会自动处理各种复杂的User-Agent格式,检测结果的准确性更高。

内容的提问来源于stack exchange,提问作者Nidhi257

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:05:54