Skip to content

Latest commit

ย 

History

History
84 lines (52 loc) ยท 3.2 KB

File metadata and controls

84 lines (52 loc) ยท 3.2 KB

API Response format ๋งŒ๋“ค์–ด ๋ณด๊ธฐ

Spring ๊ณผ์ œ๋ฅผ ํ•˜๋ฉด์„œ ํŒ€์›๋“ค๊ณผ ๊ณผ์ œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋˜ ์ค‘ ํŒ€์›๋“ค๋งˆ๋‹ค API response๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ํ˜•์‹์ด ๋‹ค ์ œ๊ฐ๊ฐ์ธ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๋˜ ๊ฐ DTO๋งˆ๋‹ค response์˜ ํ˜•์‹์ด ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ๋ฌธ์ œ์ ๋„ ์žˆ์—ˆ๋‹ค. ์ง€๊ธˆ์€ ํ•œ๋‘๋ช…์ด์„œ ๊ณผ์ œ๋ฅผ ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์–ด๋–ค ํ˜•์‹์œผ๋กœ response๋ฅผ ๋ณด๋‚ด์ค„ ๊ฒƒ์ธ์ง€๋Š” ํ˜•์‹์„ ์ •ํ•˜๋Š” ๊ฒƒ์€ ํ˜‘์—…์„ ์œ„ํ•ด์„œ ํ•„์ˆ˜๋‹ค.

๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” API response ํ˜•์‹์ด ์žˆ๋‹ค๊ณ  ํ•˜์ง€๋งŒ, ๊ณต๋ถ€๋„ ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์—์„œ ์จ๋ณผ API response ํ˜•์‹์„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.


์„ค๊ณ„๋ฅผ ํ•  ๋•Œ ๊ณ ๋ คํ•œ ์‚ฌํ•ญ

1. HTTP Status code๋Š” ๋ฐ˜๋“œ์‹œ ๋ณด๋‚ด์ค€๋‹ค.

๋ช‡๋ช‡ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” HTTP Status code ์—†์ด response๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ–ˆ๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • HTTP ๊ณต์‹ ์‚ฌ์–‘์— 41๊ฐœ์˜ ๋„ˆ๋ฌด ๋งŽ์€ statsu code๊ฐ€ ์กด์žฌํ•ด์„œ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๋‹ค.
  • HTTP๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š”๋ฐ REST API์˜ ๋Œ€์ƒ์€ ๋ธŒ๋ผ์šฐ์ €๋งŒ์ด ์•„๋‹ˆ๋ผ ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ํฌํ•จํ•œ๋‹ค.

์œ„ ๋ง์ด ๋‹ค ๋งž์ง€๋งŒ, HTTP Status code๋งŒ์œผ๋กœ๋„ ์š”์ฒญ/์‘๋‹ต์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํžˆ ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ํฌํ•จ์‹œํ‚ค๊ธฐ๋กœ ํ–ˆ๋‹ค.


2. Response์˜ ๊ตฌ์กฐ๋Š” ์ตœ๋Œ€ํ•œ ๋™์ผํ•˜๊ฒŒ ์„ค๊ณ„ํ•œ๋‹ค.

์„ฑ๊ณตํ–ˆ์„ ๋•Œ์™€ ์‹คํŒจ/์—๋Ÿฌ์˜ ๊ฒฝ์šฐ 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 ๊ด€๋ จ ์—๋Ÿฌ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜์ž.



Reference

JSend

rest-api-response-format

REST API Response Body ํ˜•์‹์— ๋Œ€ํ•œ ๊ฒฝํ—˜์  ๊ตฌ์กฐ

API Response ํฌ๋งท์— ๊ด€ํ•œ ๊ณ ์ฐฐ

์Šคํ”„๋ง API ๊ณตํ†ต ์‘๋‹ต ํฌ๋งท ๊ฐœ๋ฐœํ•˜๊ธฐ

REST API Response Format, ์‘๋‹ต ๊ฐ์ฒด๋Š” ์–ด๋–ค ํ˜•์‹์ด ์ข‹์„๊นŒ?