userAgent 辅助函数扩展了 Web Request API,为其添加了额外的属性和方法,以便与请求中的用户代理对象进行交互。
import { NextRequest, NextResponse, userAgent } from 'next/server'
export function proxy(request: NextRequest) {
const url = request.nextUrl
const { device } = userAgent(request)
// device.type can be: 'mobile', 'tablet', 'console', 'smarttv',
// 'wearable', 'embedded', or undefined (for desktop browsers)
const viewport = device.type || 'desktop'
url.searchParams.set('viewport', viewport)
return NextResponse.rewrite(url)
}import { NextResponse, userAgent } from 'next/server'
export function proxy(request) {
const url = request.nextUrl
const { device } = userAgent(request)
// device.type can be: 'mobile', 'tablet', 'console', 'smarttv',
// 'wearable', 'embedded', or undefined (for desktop browsers)
const viewport = device.type || 'desktop'
url.searchParams.set('viewport', viewport)
return NextResponse.rewrite(url)
}isBot一个布尔值,指示请求是否来自一个已知的机器人。
browser一个对象,包含请求中使用的浏览器信息。
name:一个字符串,表示浏览器的名称;如果无法识别,则为 undefined。version:一个字符串,表示浏览器的版本;如果无法识别,则为 undefined。device一个对象,包含请求中使用的设备信息。
model:一个字符串,表示设备的型号;如果无法识别,则为 undefined。type:一个字符串,表示设备的类型,例如 console、mobile、tablet、smarttv、wearable、embedded,或者 undefined。vendor:一个字符串,表示设备的供应商;如果无法识别,则为 undefined。engine一个对象,包含浏览器引擎的信息。
name:一个字符串,表示引擎的名称。可能的值包括:Amaya、Blink、EdgeHTML、Flow、Gecko、Goanna、iCab、KHTML、Links、Lynx、NetFront、NetSurf、Presto、Tasman、Trident、w3m、WebKit 或 undefined。version:一个字符串,表示引擎的版本;如果无法识别,则为 undefined。os一个对象,包含操作系统的相关信息。
name:一个字符串,表示操作系统的名称;如果无法识别,则为 undefined。version:一个字符串,表示操作系统的版本;如果无法识别,则为 undefined。cpu一个对象,包含 CPU 架构的信息。
architecture:一个字符串,表示 CPU 的架构。可能的值包括:68k、amd64、arm、arm64、armhf、avr、ia32、ia64、irix、irix64、mips、mips64、pa-risc、ppc、sparc、sparc64 或 undefined。