๋ชฉ์ฐจ
- API๋ฅผ ๋ฐฐ์ ๋๋ฐ REST๋ ๋ ๋ญ๊ฐ?
- REST API์ ์ ์
- REST์ ํต์ฌ ์์น
- HTTP ๋ฉ์๋ ์์ ์ ๋ฆฌ – GET, POST, PUT, DELETE
- REST API URL ์ค๊ณ ๋ฐฉ์
- REST API ์์ฒญ๊ณผ ์๋ต์ ๊ตฌ์กฐ
- REST API๊ฐ ์๋ ๊ฒ๋ค – SOAP์์ ์ฐจ์ด
- ์ ๋ฆฌ ๋ฐ ๋ค์ ๋จ๊ณ
1. API๋ฅผ ๋ฐฐ์ ๋๋ฐ REST๋ ๋ ๋ญ๊ฐ?
API๊ฐ "์๋ก ๋ค๋ฅธ ์ํํธ์จ์ด๊ฐ ์ํตํ๋ ์ฐฝ๊ตฌ"๋ผ๋ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ๋ฐ ๊ด๋ จ ๊ธ์ ์ฝ๋ค ๋ณด๋ฉด ๋จ์ํ "API"๊ฐ ์๋๋ผ "REST API", "RESTful API"๋ผ๋ ํํ์ ๋ ์์ฃผ ๋ง๋๊ฒ ๋ฉ๋๋ค.
REST๋ API๋ฅผ ๋ง๋๋ ์ฌ๋ฌ ๋ฐฉ์ ์ค ํ๋์ ๋๋ค. ํ์ฌ ์น ์๋น์ค์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ API ์ค๊ณ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์, ์น ๊ฐ๋ฐ์ ๋ฐฐ์ด๋ค๋ฉด REST API ๊ฐ๋ ์ ๋ฐ๋์ ์์์ผ ํฉ๋๋ค.
2. REST API์ ์ ์
**REST(Representational State Transfer)**๋ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋๋ก ๋ก์ด ํ๋ฉ์ด 2000๋ ์ ์ ์ํ API ์ค๊ณ ์์น์ ๋๋ค. REST ์์น์ ๋ฐ๋ฅด๋ API๋ฅผ REST API ๋๋ RESTful API๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
REST API๋ HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค. URL๋ก ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ์ง ํํํ๊ณ , HTTP ๋ฉ์๋(GET, POST, PUT, DELETE ๋ฑ)๋ก ์ด๋ค ํ๋์ ํ ์ง ํํํฉ๋๋ค.
3. REST์ ํต์ฌ ์์น
REST API๊ฐ ๋ฐ๋ฅด๋ ์ฃผ์ ์์น์ ์์๋๋ฉด ์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ท ์ผํ ์ธํฐํ์ด์ค: URL๊ณผ HTTP ๋ฉ์๋๋ฅผ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๋๊ฐ ๋ง๋ค์ด๋ ๋น์ทํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ต๋๋ค.
๋ฌด์ํ(Stateless): ๊ฐ ์์ฒญ์ ๋ ๋ฆฝ์ ์ด๋ฉฐ, ์๋ฒ๋ ์ด์ ์์ฒญ์ ์ํ๋ฅผ ๊ธฐ์ตํ์ง ์์ต๋๋ค. ํ์ํ ์ ๋ณด๋ ๋งค ์์ฒญ๋ง๋ค ํจ๊ป ์ ๋ฌํด์ผ ํฉ๋๋ค.
๊ณ์ธต ๊ตฌ์กฐ: ํด๋ผ์ด์ธํธ๋ ์์ ์ด ์๋ฒ์ ์ง์ ํต์ ํ๋์ง, ์ค๊ฐ ์๋ฒ(ํ๋ก์, ๋ก๋๋ฐธ๋ฐ์)๋ฅผ ๊ฑฐ์น๋์ง ์ ํ์๊ฐ ์์ต๋๋ค.
์บ์ ๊ฐ๋ฅ: ์๋ต ๋ฐ์ดํฐ๋ ์บ์ํ ์ ์์ด์ผ ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค.
4. HTTP ๋ฉ์๋ ์์ ์ ๋ฆฌ – GET, POST, PUT, DELETE
REST API์์ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ ์ด ๋ฐ๋ก HTTP ๋ฉ์๋์ ๋๋ค. ๊ฐ์ URL์ด๋ผ๋ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋์ ๋ฐ๋ผ ์์ ํ ๋ค๋ฅธ ๋์์ ํฉ๋๋ค.
| GET | ๋ฐ์ดํฐ ์กฐํ | ๋์๊ด์์ ์ฑ ์ ๋น๋ ค๋ณด๊ธฐ |
| POST | ๋ฐ์ดํฐ ์์ฑ | ๋์๊ด์ ์ ์ฑ ๋ฑ๋กํ๊ธฐ |
| PUT | ๋ฐ์ดํฐ ์ ์ฒด ์์ | ์ฑ ์ ๋ด์ฉ ์ ์ฒด๋ฅผ ์ ๋ฒ์ ์ผ๋ก ๊ต์ฒดํ๊ธฐ |
| PATCH | ๋ฐ์ดํฐ ์ผ๋ถ ์์ | ์ฑ ์ ํน์ ํ์ด์ง๋ง ์์ ํ๊ธฐ |
| DELETE | ๋ฐ์ดํฐ ์ญ์ | ์ฑ ์ ๋์๊ด์์ ํ๊ธฐํ๊ธฐ |
GET – ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์์ฒญ์ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ช ๋ฒ์ ํธ์ถํด๋ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์์ URL์ ์ ๋ ฅํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก GET ์์ฒญ์ด ๋ฐ์ํฉ๋๋ค.
POST – ์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ๋ ์๋ฒ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ์์ฒญ์ ๋๋ค. ํ์๊ฐ์ , ๊ฒ์๊ธ ์์ฑ, ์ฃผ๋ฌธ ์์ฑ ๋ฑ์ด ํด๋น๋ฉ๋๋ค. ๊ฐ์ ์์ฒญ์ ๋ฐ๋ณตํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ค๋ณต์ผ๋ก ์์ฑ๋ ์ ์์ต๋๋ค.
PUT – ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์๋ก์ด ๋ด์ฉ์ผ๋ก ์์ ํ ๊ต์ฒดํ๋ ์์ฒญ์ ๋๋ค. ์์ ํ์ง ์์ ํ๋๋ ๋ชจ๋ ํฌํจํด์ ์ ์กํด์ผ ํฉ๋๋ค.
PATCH – ๋ฐ์ดํฐ ์ผ๋ถ๋ง ์์ ํ ๋ ๊ธฐ์กด ๋ฐ์ดํฐ ์ค ์ผ๋ถ ํ๋๋ง ์์ ํ๋ ์์ฒญ์ ๋๋ค. ๋ณ๊ฒฝํ ํ๋๋ง ๋ณด๋ด๋ฉด ๋ฉ๋๋ค. PUT๊ณผ ํผ์ฉ๋๋ ๊ฒฝ์ฐ๋ ๋ง์ต๋๋ค.
DELETE – ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์๋ฒ์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ์์ฒญ์ ๋๋ค. ๊ฒ์๊ธ ์ญ์ , ๊ณ์ ํํด ๋ฑ์ด ํด๋น๋ฉ๋๋ค.
5. REST API URL ์ค๊ณ ๋ฐฉ์
REST API URL์ ๋ช ์ฌ๋ก ๋ฆฌ์์ค(์์)๋ฅผ ํํํ๊ณ , HTTP ๋ฉ์๋๋ก ํ๋์ ํํํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ธ๋ก๊ทธ ๊ฒ์๊ธ์ ๊ด๋ฆฌํ๋ API URL์ ์ค๊ณํ๋ค๋ฉด ์๋์ ๊ฐ์ด ๊ตฌ์ฑํฉ๋๋ค.
์ ์ฒด ๊ฒ์๊ธ ๋ชฉ๋ก์ ์กฐํํ ๋๋ GET ๋ฐฉ์์ผ๋ก /posts์ ์์ฒญํฉ๋๋ค. ํน์ ๊ฒ์๊ธ์ ์กฐํํ ๋๋ GET ๋ฐฉ์์ผ๋ก /posts/1์ฒ๋ผ ID๋ฅผ URL์ ํฌํจํฉ๋๋ค. ์ ๊ฒ์๊ธ์ ์์ฑํ ๋๋ POST ๋ฐฉ์์ผ๋ก /posts์ ์์ฒญํฉ๋๋ค. ๊ฒ์๊ธ์ ์์ ํ ๋๋ PUT ๋ฐฉ์์ผ๋ก /posts/1์ ์์ฒญํฉ๋๋ค. ๊ฒ์๊ธ์ ์ญ์ ํ ๋๋ DELETE ๋ฐฉ์์ผ๋ก /posts/1์ ์์ฒญํฉ๋๋ค.
REST API URL ์ค๊ณ ์ ์ง์ผ์ผ ํ ๊ท์น์ด ๋ช ๊ฐ์ง ์์ต๋๋ค. URL์๋ ๋์ฌ ๋์ ๋ช ์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. /getPosts ๋์ /posts์ฒ๋ผ ์์ฑํฉ๋๋ค. ์๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ณ ๋จ์ด ๊ตฌ๋ถ์๋ ํ์ดํ(-)์ ์ฌ์ฉํฉ๋๋ค. ๋ง์ง๋ง ์ฌ๋์(/)๋ ๋ถ์ด์ง ์์ต๋๋ค.
6. REST API ์์ฒญ๊ณผ ์๋ต์ ๊ตฌ์กฐ
REST API๋ ์ฃผ๋ก JSON ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
์์ฒญ ์์๋ก, ์ ์ฌ์ฉ์๋ฅผ ์์ฑํ๋ POST ์์ฒญ์ ๋ณธ๋ฌธ(body)์ ์๋์ ๊ฐ์ JSON ํํ์ ๋๋ค.
{
"name": "ํ๊ธธ๋",
"email": "hong@example.com",
"password": "1234"
}
์๋ต ์์๋ก, ์๋ฒ๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ HTTP ์ํ ์ฝ๋์ ํจ๊ป JSON์ผ๋ก ๋๋ ค์ค๋๋ค.
{
"id": 1,
"name": "ํ๊ธธ๋",
"email": "hong@example.com",
"createdAt": "2026-05-01T09:00:00Z"
}
HTTP ์ํ ์ฝ๋๋ก ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์์ต๋๋ค. 200์ ์ฑ๊ณต, 201์ ์์ฑ ์ฑ๊ณต, 400์ ์๋ชป๋ ์์ฒญ, 401์ ์ธ์ฆ ํ์, 404๋ ๋ฆฌ์์ค ์์, 500์ ์๋ฒ ์ค๋ฅ๋ฅผ ์๋ฏธํฉ๋๋ค.
7. REST API๊ฐ ์๋ ๊ฒ๋ค – SOAP์์ ์ฐจ์ด
REST ์ด์ ์๋ **SOAP(Simple Object Access Protocol)**์ด๋ผ๋ ๋ฐฉ์์ด ๋ง์ด ์ฌ์ฉ๋์ต๋๋ค. ๋ ๋ฐฉ์์ ๊ฐ๋จํ ๋น๊ตํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ๋ฐ์ดํฐ ํ์ | JSON (์ฃผ๋ก) | XML |
| ์๋ | ๋น ๋ฆ | ๋๋ฆผ |
| ๋ณต์ก๋ | ๊ฐ๋จ | ๋ณต์ก |
| ํ์ฌ ์ฌ์ฉ | ๋๋ถ๋ถ์ ์น ์๋น์ค | ๊ธ์ต, ๊ณต๊ณต๊ธฐ๊ด ์ผ๋ถ |
ํ์ฌ๋ ๋๋ถ๋ถ์ ์น·์ฑ ์๋น์ค๊ฐ REST API๋ฅผ ์ฌ์ฉํ๋ฉฐ, SOAP๋ ์ผ๋ถ ๊ธ์ต๊ธฐ๊ด์ด๋ ๋ ๊ฑฐ์ ์์คํ ์์ ์ ์ง๋๊ณ ์์ต๋๋ค.
8. ์ ๋ฆฌ ๋ฐ ๋ค์ ๋จ๊ณ
์ค๋ ๋ฐฐ์ด ํต์ฌ์ ์ ๋ฆฌํฉ๋๋ค.
- REST API๋ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก URL๋ก ๋ฆฌ์์ค๋ฅผ ํํํ๊ณ ๋ฉ์๋๋ก ํ๋์ ํํํ๋ API ์ค๊ณ ๋ฐฉ์์ ๋๋ค.
- GET์ ์กฐํ, POST๋ ์์ฑ, PUT์ ์ ์ฒด ์์ , PATCH๋ ๋ถ๋ถ ์์ , DELETE๋ ์ญ์ ๋ฅผ ๋ด๋นํฉ๋๋ค.
- URL์ ๋ช ์ฌ๋ก ์ค๊ณํ๊ณ , ํ๋์ HTTP ๋ฉ์๋๋ก ๊ตฌ๋ถํฉ๋๋ค.
- REST API๋ ์ฃผ๋ก JSON ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
๋ค์ ๊ธ์์๋ JSON์ด ๋ฌด์์ธ์ง, ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฃผ๊ณ ๋ฐ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.