Spring ๊ณผ์ ๋ฅผ ํ๋ฉด์ ํ์๋ค๊ณผ ๊ณผ์ ๋ฆฌ๋ทฐ๋ฅผ ํ๋ ์ค ํ์๋ค๋ง๋ค API response๋ก ์ ๋ฌํ๋ ๋ฐ์ดํฐ์ ํ์์ด ๋ค ์ ๊ฐ๊ฐ์ธ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค. ๋ ๊ฐ DTO๋ง๋ค response์ ํ์์ด ๋ฌ๋ผ์ง๋ค๋ ๋ฌธ์ ์ ๋ ์์๋ค. ์ง๊ธ์ ํ๋๋ช ์ด์ ๊ณผ์ ๋ฅผ ํ๊ณ ์์ง๋ง, ์ด๋ค ํ์์ผ๋ก response๋ฅผ ๋ณด๋ด์ค ๊ฒ์ธ์ง๋ ํ์์ ์ ํ๋ ๊ฒ์ ํ์ ์ ์ํด์ ํ์๋ค.
๋ง์ด ์ฌ์ฉํ๋ API response ํ์์ด ์๋ค๊ณ ํ์ง๋ง, ๊ณต๋ถ๋ ํ๊ณ ํ๋ก์ ํธ์์ ์จ๋ณผ API response ํ์์ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ํ๋ค.
๋ช๋ช ๋ธ๋ก๊ทธ์์๋ HTTP Status code ์์ด response๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ์ ํธํ๋๋ฐ ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- HTTP ๊ณต์ ์ฌ์์ 41๊ฐ์ ๋๋ฌด ๋ง์ statsu code๊ฐ ์กด์ฌํด์ ์๋ต์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์ ์๊ฐ ๋๋ฌด ๋ง๋ค.
- HTTP๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋์์ผ๋ก ํ๋๋ฐ REST API์ ๋์์ ๋ธ๋ผ์ฐ์ ๋ง์ด ์๋๋ผ ๋ง์ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ํฌํจํ๋ค.
์ ๋ง์ด ๋ค ๋ง์ง๋ง, HTTP Status code๋ง์ผ๋ก๋ ์์ฒญ/์๋ต์ ๋ํ ์ถฉ๋ถํ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์๋ค๊ณ ์๊ฐํด์ ํฌํจ์ํค๊ธฐ๋ก ํ๋ค.
์ฑ๊ณตํ์ ๋์ ์คํจ/์๋ฌ์ ๊ฒฝ์ฐ response์ ํ์์ ๋์ผํ๊ฒ ์ ์งํด์ผ ํ๋ ค๊ณ ํ๋๋ฐ ๋ฌธ์ ๊ฐ ์์๋ค.
{
"status": "string",
"message": "string",
"result": "object"
}์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ฉด ์ฑ๊ณต/์คํจ/์๋ฌ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋์ผํ ํ์์ผ๋ก response๋ฅผ ์ ๋ฌํ ์ ์๋ค. ํ์ง๋ง ์ฑ๊ณตํ์ ๋์ ์คํจ/์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ result์ ๊ฐ์ด ๋ค์ด๊ฐ๋๊ฒ ๋ญ๊ฐ ์ด์ํ๋ค. ๊ทธ๋์ ๋ ๋ฒ์จฐ ๋ฐฉ์์ ๋ง๋ค์ด ๋ดค๋ค.
// success
{
"status": "string",
"message": "string",
"data": "object"
}
// error
{
"status": "string",
"message": "string"
}๊ฐ์ธ์ ์ผ๋ก๋ ๋๋ฒ์งธ ๋ฐฉ์์ด ๋ ๋ง์์ ๋๋๋ฐ, ๋ญ๊ฐ ๋ ์ข์ ๋ฐฉ์์ธ์ง๋ ์์ง ๊ฐ์ด ์ ์ ์กํ๋ค.
๋ ๋ง์ ํ๋ก์ ํธ๋ฅผ ํด๋ณด๊ณ ์ค์ ๋ก ์ฌ์ฉํด๋ณด๋ฉด์ ๋ ๋ณด์ํด๋๊ฐ์.
-
Response body๋ก ์ ๋ฌ๋๋ data์ front์ ์ฝ์ํ ์๋ฌ ์ฝ๋๋ฅผ ๋ณด๋ด์ฃผ์.(5~6์๋ฆฌ ์ซ์๋ก)
-
error์ fail์ ๋ช ํํ ๊ตฌ๋ถํด์ ๋ค์ ๊ตฌ์กฐ๋ฅผ ์ก์.
-
BindingResult, FieldError, ObjectError ๋ฑ validation ๊ด๋ จ ์๋ฌ์ ๋ํด ๊ณต๋ถํ์.
REST API Response Body ํ์์ ๋ํ ๊ฒฝํ์ ๊ตฌ์กฐ
API Response ํฌ๋งท์ ๊ดํ ๊ณ ์ฐฐ
์คํ๋ง API ๊ณตํต ์๋ต ํฌ๋งท ๊ฐ๋ฐํ๊ธฐ
REST API Response Format, ์๋ต ๊ฐ์ฒด๋ ์ด๋ค ํ์์ด ์ข์๊น?