๋ฐฑ์๋๊ฐ ์ด๋ค ๊ฒฝ๋ก(Endpoint)๋ฅผ ์ ๊ณตํ๊ณ , ์ด๋ค ๋ฐฉ์(Method)์ผ๋ก ์์ฒญํด์ผ ํ๋ฉฐ, ์์ฒญ/์๋ต์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋์ง๋ฅผ ๋ฌธ์ํํ ๊ฒ์ด๋ค.
API๋ฅผ ์ด๋ค ์ฃผ์๋ก ์์ฒญํ ์ง ๊ฒฐ์ ํ๋ค. ์ฌ๋ฌ API๋ฅผ ๊ตฌ๋ถํ๋ ์๋ณ์ ์ญํ ์ ํ๋ค.
์: /users, /posts/1, /login
์์:
GET /users
POST /login
DELETE /posts/{id}
์์ฒญ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ์๋ฏธํ๋ ํค์๋์ด๋ค.
Method ์ค๋ช GET์ ๋ณด ์กฐํ POST์๋ก์ด ๋ฐ์ดํฐ ์์ฑ PUT์ ์ฒด ์์ PATCH๋ถ๋ถ ์์ DELETE๋ฐ์ดํฐ ์ญ์
์์:
POST /login โ ๋ก๊ทธ์ธ ์์ฒญ
GET /users โ ์ ์ ๋ชฉ๋ก ์กฐํ
ํ๋ก ํธ์๋๊ฐ ๋ฐฑ์๋๋ก ๋ณด๋ผ ๋ฐ์ดํฐ๋ค์ ์๋ฏธํ๋ค.
์ข ๋ฅ ์์น ์ค๋ช ์์ Path Parameter URL ์ ๊ฐ์ด URL์ ํฌํจ๋จ /users/{id}Query Parameter ?key=valueํํฐ๋ง/๊ฒ์์ฉ /posts?userId=3Request Body body์ ๋ด๊น POST/PUT์ ์ฃผ๋ก ์ฌ์ฉ { "title": "์ ๋ชฉ" }Header ๋ฉํ ์ ๋ณด ์ธ์ฆ ํ ํฐ, ์ธ์ด ์ค์ ๋ฑ Authorization: Bearer token
์์:
POST /login
Body:
{
"email": "test@email.com",
"password": "1234"
}
๋ฐฑ์๋๊ฐ ํ๋ก ํธ์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ด๋ค.
์์ ์ค๋ช ์์ Status Code ์์ฒญ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ์ซ์ 200, 400, 404, 500 Response Body ์ค์ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ { "name": "ํ๊ธธ๋" }
์์:
200 OK
{
"id": 1,
"name": "ํ๊ธธ๋",
"email": "hong@example.com"
}
์คํจํ์ ๋ ์ด๋ค ์๋ฌ๊ฐ ๋๋์ง์ ๋ํ ์ ์์ด๋ค.
Status Code ์๋ฏธ ์์ ๋ฉ์์ง 400 ์๋ชป๋ ์์ฒญ "ํ์๊ฐ ๋๋ฝ" 401 ์ธ์ฆ ์คํจ "๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค" 403 ๊ถํ ์์ "์ ๊ทผ ๋ถ๊ฐ" 404 ์กด์ฌํ์ง ์์ "์ฌ์ฉ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค" 500 ์๋ฒ ์ค๋ฅ "๋ด๋ถ ์๋ฒ ์ค๋ฅ"
์ค์ ์ฌ์ฉํ ๋ ์ด๋ค ์์ผ๋ก ์์ฒญํ๊ณ ์ด๋ค ์๋ต์ด ์ค๋์ง ๋ณด์ฌ์ฃผ๋ ์ํ์ด๋ค.
์์:
POST /login
์์ฒญ:
{
"email": "kim@test.com",
"password": "1234"
}
์๋ต:
{
"accessToken": "abcdef12345",
"userId": 7
}