티스토리 뷰
우선 모킹 서비스를 이용하는 경우는 프론트엔드가 백엔드의 api 가 개발될 때 까지 계속 기다려야하는 문제들이 발생하였고 프론트엔드가 먼저 백엔드의 api 를 설계 또는 개발하여 선작업을 할 수 있도록 합니다.
vite 기반의 React 프로젝트이며, msw(mock service worker) 를 적용하여 모킹 서비스를 만드는 과정을 단계별로 설명하겠습니다.
시작
1. msw 설치
npm install msw --save-dev
2. msw 서비스 워커 생성하기
npx msw init public/ --save
3. browser mock 생성하기
// src/mocks/browser.js
import { setupWorker } from 'msw/browser'
import { handlers } from './handlers'
export const worker = setupWorker(...handlers)
4. 모킹 핸들러 생성하기
// src/mocks/handlers.js
import { http, HttpResponse } from 'msw'
export const handlers = [
http.get('/api/users', () => {
return HttpResponse.json({
id: '1',
firstName: 'lee',
lastName: 'joo'
})
})
]
5. 개발 환경에서 msw 활성화
아래 셋팅시 msw 에서 의도하지 않는 요청이 가로채지는 경우가 발생합니다.
onUnhandledRequest 를 사용해서 특정 요청에 경로만 처리하도록 설정하여야 합니다.
우리는 /api/ 가 없는 모든 요청은 가로채서 없애버립니다!
import React from 'react'
import ReactDOM from 'react-dom/client'
import { RouterProvider } from 'react-router-dom'
import router from '@/router.jsx'
async function enableMocking() {
if (process.env.NODE_ENV !== 'development') {
return
}
const { worker } = await import('./mocks/browser.js')
return worker.start({
onUnhandledRequest: (request, print) => {
if (!request.url.includes('/api/')) {
console.log('/api/ 가 포함되지 않은 요청 url', request.url)
return
}
// 그 외의 처리되지 않은 요청에 대해서는 경고 출력
print.warning()
}
})
}
// js 용
enableMocking().then(() => {
const rootElement = document.getElementById('root')
if (rootElement) {
ReactDOM.createRoot(rootElement).render(
<React.StrictMode>
<RouterProvider router={router} />
</React.StrictMode>
)
}
})
// ts 용
enableMocking().then(() => {
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<RouterProvider router={router} />
</React.StrictMode>
)
})
이제 개발버전에서 서버를 실행해서 api 를 호출해봅시다.
또한, 제대로 설정되었다면 아래와 같이 애플리케이션에 Service workers 에 등록된 상태를 볼 수 있습니다.!
'개발.. > React' 카테고리의 다른 글
React 에서 FullCalendar 사용하기 (0) | 2024.08.16 |
---|---|
vitest + React Testing Library 사용하여 테스트 케이스 만들기 (0) | 2024.08.11 |
기능 또는 도메인 기반의 React 프로젝트 구조 구축하기 (0) | 2024.07.05 |
스토리북에서 React Router v6 이상 에러 발생시 문제 해결 방법 (0) | 2024.07.04 |
React 에서 vite.config.js 경로 alias 설정 (0) | 2024.06.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- github
- nextjs13
- cors
- nextjs14
- 깃허브
- NUXT
- docker
- nextjs15
- dockerfile
- 티스토리챌린지
- React
- 서버 to 서버
- 스벨트
- 타입스크립트
- Storybook
- NextJS
- seo
- Git
- webpack
- svelte
- 네이버 서치 어드바이저
- vue router
- 오블완
- nodejs
- openAI
- nuxt2
- vue composition api
- Github Actions
- Vite
- vscode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함