RestfulApi ์์ method์ ๋ฐ๋ฅธ body ์ ์ ๋ฌด
- POST , PATCH -> body ์์
- DELETE, GET -> body ์์
(DELETE ๋ body ๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง body ๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์จ์ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์์,
query ๋ฅผ ๋์ ์ฌ์ฉํจ)
status ๊ฐ 204์ธ ๊ฒฝ์ฐ
- ์ญ์ ์ฑ๊ณต ์ ๋ฐฑ์ ํ๋ก ํธ์๊ฒ status๋ฅผ 204๋ก ์ฃผ๋ฉฐ ์ฑ๊ณตํ๋ค๋ ์๋ฏธ๋ฅผ ๋ณด๋ธ๋ค.
- 204๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ reponse๋ฅผ ๋ณด๋ผ ์ ์๋ค.
- status, statusText ๋ก ํ๋ก ํธ๋ ์ญ์ ์ฑ๊ณต์ ํ์ธํ๊ณ ๋ค์ ํ๋์ ํด์ผ ํ๋ค.
์๋ฌ ์ฒ๋ฆฌ
switch (res.message) {
case 'SUCCESS':
alert('์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐํ์ต๋๋ค');
break;
case 'BOOK_NOT_EXIST':
alert('์กด์ฌํ์ง ์๋ ์ฑ
์
๋๋ค.');
break;
case 'BOOK_ALREADY_EXIST':
alert('์ด๋ฏธ ๊ตฌ๋งคํ ์ฑ
์
๋๋ค.');
break;
case 'INVALID_CART':
case 'KEY_ERROR':
alert('์๋ฌ์
๋๋ค.');
break;
default:
break;
}
const ERRORS = {
SUCCESS: '์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐํ์ต๋๋ค.',
BOOK_NOT_EXIST: '์กด์ฌํ์ง ์๋ ์ฑ
์
๋๋ค.',
BOOK_ALREADY_EXIST: '์ด๋ฏธ ๊ตฌ๋งคํ ์ฑ
์
๋๋ค.',
};
if(ERROR[res.message]) {
return alert(ERRORS[res.message])
}
alert('์๋ฌ์
๋๋ค');
- ๋ณ๊ฒฝ 2์ฐจ
-> ์๋ฌ ๋ถ๋ถ๋ง์ ์ฒ๋ฆฌํ๋ js ํ์ผ ์์ฑ
modal ์คํฌ๋กค ์์ ๊ธฐ(+์ต์๋จ์ผ๋ก ์ฌ๋ผ๊ฐ์ง ์๊ฒ ํ๊ธฐ)
useEffect(() => {
const scrollY = window.scrollY;
document.body.style.overflow = 'hidden';
return () => {
document.body.style.cssText = '';
window.scrollTo(0, parseInt(scrollY * -1 || '0', 10) * -1);
};
}, []);
- ์ด ๋ฐฉ๋ฒ์ ์ฌ์ค ๋งค๋๋ฝ์ง๋ ์๋ค ๊ทธ๋์ ๋ ๋งค๋๋ฌ์ด ๋ฐฉ์์ ์ฐพ์๋ณผ ์์