๐ HTTP Methods
1. RESTful API๋ ๋ฌด์์ธ๊ฐ์?โ
RESTful API๋ ํ์คํ๋ ๋์์ธ ์คํ์ผ์ ์ฑํํ์ฌ, ๋คํธ์ํฌ ์์ ์๋ก ๋ค๋ฅธ ์์คํ ๊ฐ ํต์ ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. REST ์์น์ ๋ฐ๋ฅด๊ธฐ ์ํด API๋ ์์ธก ๊ฐ๋ฅํ๊ณ ์ดํดํ๊ธฐ ์ฌ์์ผ ํฉ๋๋ค. ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์ ๋ค์ ์ธ ๊ฐ์ง์ ์ฃผ๋ก ๊ด์ฌ์ ๊ฐ์ง๋๋ค:
- URL ๊ฒฝ๋ก(url path): ํด๋ผ์ด์ธํธ ์ธก ์์ฒญ์ ๋ฒ์๋ฅผ ํ์ธํฉ๋๋ค. ์:
/products: ์ ํ ๋ชฉ๋ก์ ๋ฐํํ ์ ์์/products/abc: ์ ํ ID๊ฐ abc์ธ ์ ํ์ ์์ธ ์ ๋ณด๋ฅผ ์ ๊ณต
- HTTP ๋ฉ์๋: ๊ตฌ์ฒด์ ์ธ ์คํ ๋ฐฉ์์ ์ ์ํฉ๋๋ค:
GET: ๋ฐ์ดํฐ ์กฐํ์ ์ฌ์ฉPOST: ์ ๋ฐ์ดํฐ ์์ฑ์ ์ฌ์ฉPUT: ๊ธฐ์กด ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ์ ์ฌ์ฉDELETE: ๋ฐ์ดํฐ ์ญ์ ์ ์ฌ์ฉ
- ์ํ ์ฝ๋(status code): ์์ฒญ์ ์ฑ๊ณต ์ฌ๋ถ์ ์คํจ ์ ๋ฌธ์ ์ ์์ธ์ ๋น ๋ฅด๊ฒ ์๋ ค์ค๋๋ค. ์ฃผ์ ์ํ ์ฝ๋:
200: ์ฑ๊ณต404: ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์500: ์๋ฒ ์ค๋ฅ
2. GET์ผ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋๋ฐ, ์ POST๋ฅผ ์ฌ์ฉํด์ผ ํ๋์?โ
GET์ผ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์์ฒญ์ ๋ณด๋ผ ์ ์๋๋ฐ, ์POST๋ฅผ ์ฌ์ฉํด์ผ ํ๋์?
์ฃผ๋ก ๋ค์ ๋ค ๊ฐ์ง ๊ณ ๋ ค์ฌํญ์ ๊ธฐ๋ฐํฉ๋๋ค:
- ๋ณด์์ฑ:
GET์ ๋ฐ์ดํฐ๋ URL์ ์ฒจ๋ถ๋์ด ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋๊ธฐ ์ฌ์ด ๋ฐ๋ฉด,POST๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ์body์ ๋ฃ์ด ์๋์ ์ผ๋ก ๋ ์์ ํฉ๋๋ค. - ๋ฐ์ดํฐ ํฌ๊ธฐ ์ ํ:
GET์ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ์ URL ๊ธธ์ด ์ ํ(๋ธ๋ผ์ฐ์ ๋ง๋ค ์ฝ๊ฐ ๋ค๋ฅด์ง๋ง ๋๋ต 2048 bytes ์ ํ)์ผ๋ก ์ธํด ๋ฐ์ดํฐ ์์ด ์ ํ๋ฉ๋๋ค.POST๋ ๋ช ๋ชฉ์ ์ ํ์ด ์์ง๋ง, ์ค์ ๋ก๋ ์ ์์ ์ธ ๋๋ ๋ฐ์ดํฐ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฏธ๋ค์จ์ด ์ค์ ์ผ๋ก ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ดexpress์body-parser. - ์๋ฏธ์ ๋ช
ํ์ฑ: ๊ฐ๋ฐ์๊ฐ ์์ฒญ์ ๋ชฉ์ ์ ๋ช
ํํ ์ ์ ์๋๋ก ํฉ๋๋ค.
GET์ ๋ณดํต ๋ฐ์ดํฐ ์กฐํ์,POST๋ ๋ฐ์ดํฐ ์์ฑ ๋๋ ์ ๋ฐ์ดํธ์ ๋ ์ ํฉํฉ๋๋ค. - ๋ถ๋ณ์ฑ(Immutability): HTTP ํ๋กํ ์ฝ์์
GET๋ฉ์๋๋ "์์ ํ" ๊ฒ์ผ๋ก ์ค๊ณ๋์ด, ๋ช ๋ฒ์ ์์ฒญ์ ๋ณด๋ด๋ ์๋ฒ์ ๋ฐ์ดํฐ์ ๋ณ๋์ ์ผ์ผํค์ง ์์ต๋๋ค.
3. HTTP์์ PUT ๋ฉ์๋์ ์ญํ ์ ๋ฌด์์ธ๊ฐ์?โ
PUT๋ฉ์๋์ ์ฉ๋๋ ๋ฌด์์ธ๊ฐ์?
์ฃผ๋ก ๋ ๊ฐ์ง ์ฉ๋์ ๋๋ค:
- ์ด๋ฏธ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ (์: ์ฌ์ฉ์ ์ ๋ณด ์์ )
- ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์๋ก ์์ฑ
Exampleโ
const axios = require('axios');
async function updateUser(userId, newName) {
const url = `https://api.example.com/users/${userId}`; // api URL
const data = {
name: newName,
};
try {
const response = await axios.put(url, data); // PUT ์์ฒญ ์คํ
console.log('User updated:', response.data); // ์
๋ฐ์ดํธ๋ ์ฌ์ฉ์ ์ ๋ณด ์ถ๋ ฅ
} catch (error) {
console.log('Error updating user:', error); // ์๋ฌ ์ ๋ณด ์ถ๋ ฅ
}
}
updateUser(1, 'Pitt Wu');