NextRequest
NextRequest는 추가 편의 메서드와 함께 Web Request API (opens in a new tab)를 확장합니다.
cookies
Set-Cookie
(opens in a new tab) 헤더의 요청을 읽거나 수정합니다.
set(name, value)
주어진 이름으로 요청에 주어진 값의 쿠키를 설정합니다.
// /home 요청이 주어졌을 때
// 배너를 숨기기 위한 쿠키 설정
// 요청에는 `Set-Cookie:show-banner=false;path=/home` 헤더가 추가됩니다.
request.cookies.set('show-banner', 'false')
get(name)
주어진 쿠키 이름을 기준으로 쿠키의 값을 반환합니다. 쿠키가 발견되지 않으면 undefined
를 반환합니다. 여러 개의 쿠키가 발견되면 첫 번째 쿠키만 반환합니다.
// /home 요청이 주어졌을 때
// { name: 'show-banner', value: 'false', Path: '/home' }
request.cookies.get('show-banner')
getAll()
주어진 쿠키 이름을 기준으로 쿠키의 값을 반환합니다. 이름이 주어지지 않으면 요청에 있는 모든 쿠키를 반환합니다.
// /home 요청이 주어졌을 때
// [
// { name: 'experiments', value: 'new-pricing-page', Path: '/home' },
// { name: 'experiments', value: 'winter-launch', Path: '/home' },
// ]
request.cookies.getAll('experiments')
// 또는, 요청에 있는 모든 쿠키를 가져옵니다.
request.cookies.getAll()
delete(name)
주어진 쿠키 이름을 기준으로 쿠키를 요청에서 삭제합니다.
// 삭제된 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다.
request.cookies.delete('experiments')
has(name)
주어진 쿠키 이름을 기준으로 요청에 쿠키가 있는지 여부를 반환합니다.
// 쿠키가 존재하면 true, 그렇지 않으면 false를 반환합니다.
request.cookies.has('experiments')
clear()
요청에서 Set-Cookie
헤더를 제거합니다.
request.cookies.clear()
nextUrl
네이티브 URL
(opens in a new tab) API를 확장하여 추가 편의 메서드와 Next.js 특정 속성을 포함합니다.
// /home 요청이 주어졌을 때, pathname은 /home입니다.
request.nextUrl.pathname
// /home?name=lee 요청이 주어졌을 때, searchParams는 { 'name': 'lee' }입니다.
request.nextUrl.searchParams
사용할 수 있는 옵션은 다음과 같습니다:
속성 | 유형 | 설명 |
---|---|---|
basePath | string | URL의 기본 경로. |
buildId | string | undefined | Next.js 애플리케이션의 빌드 식별자. 커스터마이징 가능. |
defaultLocale | string | undefined | 국제화의 기본 로케일. |
domainLocale | ||
- defaultLocale | string | 도메인 내의 기본 로케일. |
- domain | string | 특정 로케일과 연관된 도메인. |
- http | boolean | undefined | 도메인이 HTTP를 사용하는지 여부를 나타냅니다. |
locales | string[] | undefined | 사용 가능한 로케일의 배열. |
locale | string | undefined | 현재 활성화된 로케일. |
url | URL | URL 객체. |
ip
ip
속성은 요청의 IP 주소를 포함하는 문자열입니다. 이 값은 호스팅 플랫폼에 의해 선택적으로 제공될 수 있습니다.
참고: Vercel (opens in a new tab)에서는 이 값이 기본적으로 제공됩니다. 다른 플랫폼에서는
X-Forwarded-For
(opens in a new tab) 헤더를 사용하여 IP 주소를 제공할 수 있습니다.
// Vercel에서 제공
request.ip
// 자체 호스팅
request.headers.get('X-Forwarded-For')
geo
geo
속성은 요청의 지리적 정보를 포함하는 객체입니다. 이 값은 호스팅 플랫폼에 의해 선택적으로 제공될 수 있습니다.
참고: Vercel (opens in a new tab)에서는 이 값이 기본적으로 제공됩니다. 다른 플랫폼에서는
X-Forwarded-For
(opens in a new tab) 헤더를 사용하여 IP 주소를 제공한 후, 타사 서비스 (opens in a new tab)를 사용하여 지리적 정보를 조회할 수 있습니다.
// Vercel에서 제공
request.geo.city
request.geo.country
request.geo.region
request.geo.latitude
request.geo.longitude
// 자체 호스팅
function getGeo(request) {
let ip = request.headers.get('X-Forwarded-For')
// 타사 서비스를 사용하여 지리적 정보를 조회합니다.
}