ZOD와 함께 다음.js에서 유형 안전 API 경로
ZOD는 Next.js에서 Type-Safe API 라우팅을 구현할 수 있습니다. 먼저, 요청 및 응답의 스키마를 정의한 다음 고차 기능을 통해 유형을 검증하고 주입 한 다음, 라우팅 에서이 캡슐화를 사용하여 입력 및 출력이 확인되도록합니다. 일관성을 보장하기 위해 프론트 엔드 유형을 생성하기 위해 스키마를 재사용 할 수도 있습니다. 1. 스키마 검증 요청 본문, 쿼리 매개 변수 및 응답 구조를 정의합니다. 2. withvalidation 함수를 작성하여 요청을 자동으로 구문 분석하고 입력하십시오. 3.이 기능을 API 라우팅에 적용하여 풀 링크 유형 안전을 달성하십시오. 4. 선택적으로 응답 본문을 확인하고 공구 기능을 캡슐화합니다. 5. 프론트 엔드는 ZOD에 의해 생성 된 유형을 직접 가져와 프론트 엔드 및 백엔드 유형이 일관되도록 개발 경험과 프로젝트 품질을 향상시킵니다.
Next.js는 풀 스택 애플리케이션을 간단하게 만들 수 있지만 기본적으로 API 라우팅은 약한 유형입니다. 요청 본문 구문 분석, 쿼리 매개 변수 또는 응답 형식에 쉽게 오류를 만들 수 있습니다. ZOD와 결합하여 컴파일 타임 체크 및 요청에서 응답으로 자동 프롬프트를 사용하여 완전히 유형-안전 API 라우팅을 구현할 수 있습니다.

다음은 Next.js에서 ZOD를 사용하여 유형-안전 API 라우팅을 구현하는 실용적인 방법입니다.
✅ 요청 및 응답을 정의하는 스키마
ZOD의 핵심은 검증 가능한 데이터 구조를 정의하는 것입니다. API 라우팅의 경우 일반적으로 다음을 확인해야합니다.

- 쿼리 매개 변수 (
query
) - 요청 본문 (
body
) -
response
// lib/schemas/userschema.ts 'zod'에서 {z} 가져 오기; const createuserschema = z.object ({ 바디 : Z.Object ({ 이름 : z.string (). min (1), 이메일 : z.string (). email (), }), 쿼리 : Z.Object ({ apikey : z.string (). min (1), }).선택 과목(), }); 내보내기 유형 CreateUserInput = z.infer <typeof createUserschema>;
이 스키마는 Post /api/users
가 요구하는 구조를 정의합니다.
? 닐 유형-안전 API 프로세서를 만듭니다
우리는 고차 기능, 자동으로 구문 분석 및 req.body
및 req.query
캡슐화합니다.

// lib/api/handler.ts 'Next'에서 {nextapirequest, nexApiResponse} import; 'zod'에서 {zodschema, zoderror} import; 유형 핸들러 <T> = ( req : nextapirequest & {body : t [ 'body']; 쿼리 : t [ 'query']}, RES : NextApiresponse ) => 약속 <void> | 무효의; 변환 된 내보내기 기능 <t는 {body? : any; 쿼리? : any}> ( 스키마 : Zodschema <t>, 핸들러 : 핸들러 <t> ) { return async (req : nextapirequest, res : nextapiresponse) => { 노력하다 { const data = schema.parse ({ Body : Req.method! == 'get'? Req. Body : 정의되지 않은, 쿼리 : req.Query, }); 리턴 핸들러 (req, res); } catch (오류) { if (zoderror의 오류 인스턴스) { return res.status (400) .json ({{ 오류 : '검증 실패', 세부 사항 : Error.errors, }); } return res.status (500) .json ({error : '내부 서버 오류'}); } }; }
이것은 withValidation
함수와 함께 다음과 같습니다.
- 입력을 확인하십시오
- 유형 수준에서 "올바른
body
및query
유형"주입 " - ZOD 오류를 잡고 400을 반환하십시오
? 실제 사용 : 타입 안전 API 라우팅
// pages/api/users.ts 'Next'에서 {nextapirequest, nexApiResponse} import; '@/lib/api/handler'에서 {withvalidation} 가져 오기; '@/lib/schemas/userschema'에서 {createUserschema} import; 변환 된 기본값 ( CreateUserschema, 비동기 기능 createuser ( req : nextapirequest & {body : {name : string; 이메일 : String}}, RES : NextApiresponse ) { const {name, email} = req.body; // 여기 유형 안전 : 이름과 이메일은 Zod에 의해 문자열임을 보장했습니다. // 데이터베이스에 안전하게 삽입 할 수 있습니다 ... return res.status (201) .json ({{ ID : '123', 이름, 이메일, }); } );
지금:
- 프론트 엔드가
name: null
통과하면 ZOD에 의해 거부됩니다. - vs 코드,
req.body.
완전히 자동 완료됩니다 -
req.body.phone
에 대한 액세스는 오류를보고합니다 (스키마가 정의되지 않는 한)
? 선택 사항 : 통합 응답 형식 응답 검증
더 나아가서, 예기치 않은 민감한 필드의 반환을 방지하기 위해 출력을 확인할 수도 있습니다.
Const CreaterEpresseschema = z.Object ({ id : z.string (), 이름 : z.string (), 이메일 : z.string (), }); // const result = {id : '123', 이름, 이메일}; const parsed = createresponseschema.parse (결과); // 출력 구조가 올바른 return res.status (201) .json (Parsed)인지 확인하십시오.
validResponse(schema, data)
도구 기능을 캡슐화 할 수도 있습니다.
? 팁 : 프론트 엔드 유형 재사용
ZOD 스키마는 TypeScript 유형을 생성 할 수 있으므로 프론트 엔드가 직접 가져올 수 있습니다.
// frontend 구성 요소 '@/lib/schemas/userschema'에서 가져 오기 유형 {createUserInput}; const 데이터 : createuserinput [ 'body'] = { 이름 : 'Alice', 이메일 : 'alice@example.com', }; // 유형은 정확히 동일하며 백엔드 변경 필드에 대해 걱정할 필요가 없습니다.
기본적으로 그게 다야. 소량의 ZOD 캡슐화를 사용하면 다음에 JS API 라우팅을 얻을 수 있습니다.
- 요청 본문/쿼리 매개 변수의 자동 검증
- 전체 링크 유형 안전
- 더 나은 개발 경험 (자동 완료, 조기 오류보고)
- 런타임 오류를 줄입니다
복잡하지는 않지만 프로젝트의 품질을 크게 향상시킬 수 있습니다.
위 내용은 ZOD와 함께 다음.js에서 유형 안전 API 경로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Server-Siderendering (ssr) innext.jsgenerateshtmlontheserverfireachrequest, 개선 된 proformanceandseo.1.ssrisidealfordynamiccontentthatchangangesfrequely, suchasserdashboards.2

ZOD는 Next.js에서 Type-Safe API 라우팅을 구현할 수 있습니다. 먼저, 요청 및 응답의 스키마를 정의한 다음 고차 기능을 통해 유형을 검증하고 주입 한 다음, 라우팅 에서이 캡슐화를 사용하여 입력 및 출력이 확인되도록합니다. 일관성을 보장하기 위해 프론트 엔드 유형을 생성하기 위해 스키마를 재사용 할 수도 있습니다. 1. 스키마 검증 요청 본문, 쿼리 매개 변수 및 응답 구조를 정의합니다. 2. withvalidation 함수를 작성하여 요청을 자동으로 구문 분석하고 입력하십시오. 3.이 기능을 API 라우팅에 적용하여 풀 링크 유형 안전을 달성하십시오. 4. 선택적으로 응답 본문을 확인하고 공구 기능을 캡슐화합니다. 5. 프론트 엔드는 ZOD에 의해 생성 된 유형을 직접 가져와 프론트 엔드 및 백엔드 유형이 일관되도록하여 개구부가 향상됩니다.

JSPAPPOUTER의 국제화 실현을위한 핵심 방법은 다중 언어 관리를 위해 다음 -INTL 라이브러리를 결합하는 것입니다. 먼저, i18n 라우팅 지원을 Next.config.js에서 구성하고, 로컬, DefaultLocale 및 LocalEdetection 정의; 2. Next-Intl을 설치 한 후 메시지 디렉토리를 작성하여 각 언어의 JSON 파일을 저장하고 Middleware.js를 통해 언어 접두사 라우팅을 자동으로 처리합니다. 3. App/Layout.tsx에서 로케일을 확인하고 해당 언어 메시지를로드하고 NextIntlClient를 사용하십시오.

Remix와 Next.js의 핵심 차이점은 데이터 처리에 있습니다. 리믹스는 로더와 조치를 사용하여 서버에서 통합 요청 응답을 구현하고 양식 제출 및 리디렉션을 기본적으로 지원하며 클라이언트 요청 및 오류를 줄입니다. Next.js는 프론트 엔드 페치와 협력하기 위해 GetServersideProps 또는 API 라우팅에 의존하며 데이터 흐름은 명확하지만 수화 불일치가 쉽습니다. 2. 라우팅 측면에서, 둘 다 파일, 즉 경로를 사용하지만 리믹스의 중첩 라우팅이 더 자연 스럽습니다. 서브 루틴은 복잡한 중간 및 백엔드에 적합한 사용 아웃 레틀을 통해 레이아웃을 상속하고 렌더링합니다. Next.js의 approuter는 중첩 및 반응을 지원하지만 비교적 좋은 구조를 가지고 있습니다.

Sveltekit은 가상 DOM이없는 컴파일 타임 프레임 워크 Svelte를 기반으로하며, 특히 성능에 민감한 시나리오에 적합한 가벼운 런타임과 더 높은 성능이 있습니다. 2.next.js는 대규모 생태계, 부드러운 학습 곡선을 가진 RECT를 기반으로하며 팀 협업 및 빠른 개발에 적합합니다. 3. Sveltekit은 패키지 크기, 일차 스크린 로딩 및 수화 최적화에서 더 나은 성능을 발휘하며 섬 아키텍처를 지원합니다. 4.next.js는 기업 수준 프로젝트, 복잡한 통합 및 배포 지원에서 더 성숙합니다. 5. 성능과 간결한 구문을 추구하는 경우 Sveltekit을 선택하십시오. 생태학 및 협업을 소중히 여기면 Next.js를 선택하고 프로젝트 요구 사항 및 팀 기술 스택을 기준으로 선택하십시오.

NextAuth.js는 OAUTH, 이메일 비밀번호, JWT 등을 지원하는 Next.js의 인증 라이브러리입니다. 2. 설치 후 Pages/API/auth/[... NextAuth] .js의 제공자 및 키를 구성하십시오. 3. SessionProvider를 사용하여 응용 프로그램을 마무리하고 사용 중지, 서명, 가입 상태를 관리합니다. 4. 페이지 및 API 경로를 보호하기 위해 GetSession 또는 GetServersession을 사용합니다. 5. 자격 증명 제공 업체를 추가하여 사서함 암호 로그인을 실현하고 JWT 정책과 협력 할 수 있습니다. 6. 로그인 페이지를 사용자 정의하고 콜백을 통해 사용자 정보를 확장 할 수 있습니다. Nexta

todebuganext.jsapplicationInvScode, createAlaunch.jsonFileInthe.vscodefolderwithAconFigurationThatlaunchSthenext.jsdevserverusingthenodetyPeandsetsetSprogramto $ {workspace}/node_modules/next/bin/bin/bin/bin/bin "" "" ""

Next-Auth를 설치하고 API 라우팅 파일 앱/API/auth/[... NextAuth] /route.js를 작성하여 Google 로그인 및 비밀을 구성합니다. 2. Google_client_id를 설정합니다. 3. 로그인 및 로그 아웃 방법을 사용하여 로그인 및 로그 아웃 버튼을 추가하고 SessionProvider로 응용 프로그램을 감싸십시오. 4. 지정된 경로를 보호하기 위해 GetServerSession 또는 Withauth Middleware를 통해 단일 페이지를 보호하십시오. 5. 선택적 확장 SE
