๐Ÿ“• Language/Java

[Java] REST API์— ๋Œ€ํ•˜์—ฌ

a n u e 2022. 2. 5. 18:36
๋ชฉ์ฐจ

REST๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

 1. REST์˜ ๋ชฉ์ 

 2. REST์˜ ๊ตฌ์„ฑ์š”์†Œ

 3. REST์˜ ํŠน์ง•

 4. REST์˜ ์žฅ๋‹จ์ 

 5. REST์˜ ์„ค๊ณ„๊ทœ์น™/๋””์ž์ธ ๊ฐ€์ด๋“œ

 6. REST์˜ ์‘๋‹ต์ฝ”๋“œ


REST๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

 REST๋Š” Representational State Transfer์˜ ์•ฝ์ž๋กœ, ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ, ์ž์›์˜ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ข€ ๋” ๊ธฐ์ˆ ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด, ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ Client์™€ Server์‚ฌ์ด์˜ ํ†ต์‹  ๋ฐฉ์‹. ๋˜๋Š”, HHTP ํ”„๋กœํ† ์ฝœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 REST๋Š” ์›น์˜ ๊ธฐ์กด ๊ธฐ์ˆ ๊ณผ HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›น์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 ์ตœ๊ทผ ์„œ๋น„์Šค ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐœ๋ฐœ ํ๋ฆ„์ด ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ/๋””๋ฐ”์ด์Šค ์‹œ๋Œ€๋กœ ๋„˜์–ด์™€ ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ์™€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์›น ๋ธŒ๋ผ์šฐ์ €์™€์˜ ํ†ต์‹ ์— ๋Œ€์‘ํ•ด์•ผ ํ•œ๋‹ค. REST๋Š” ์ด์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ„์‚ฐ ํ•˜์ดํผ๋ฏธ๋””์–ด ์‹œ์Šคํ…œ์—์„œ ์šด์˜๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ž์› ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐ(ROA, Resource Oriented Architecture) : ๋ชจ๋“  ์ž์›์— ๋Œ€ํ•œ ๊ณ ์œ  HTTP URI์ด ์กด์žฌํ•จ
  • HTTP URI์„ ํ†ตํ•˜์—ฌ ์ž์›(resource) ๋ช…์‹œ. HTTP Method๋ฅผ ํ†ตํ•˜์—ฌ ์ž์›์— ๋Œ€ํ•œ CRUD Operation์„ ๋ช…์‹œํ•˜์—ฌ ์ž์›์„ ์ฒ˜๋ฆฌ.
  • CRUD Operation๋ž€?    
    CREATE POST : ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ
    READ GET : ๋ฆฌ์†Œ์Šค ์กฐํšŒ
    UPDATE PUT/PATCH : ๋ฆฌ์†Œ์Šค ๊ฐฑ์‹ (์ˆ˜์ •)
    DELETE DELETE : ๋ฆฌ์†Œ์Šค ์‚ญ์ œ
    HEAD HEAD ์ •๋ณด ์กฐํšŒ
     * PUT๊ณผ PATCH์˜ ์ฐจ์ด? PUT์€ ๋ฆฌ์†Œ์Šค ์ „์ฒด ๊ต์ฒด ๋ฐ ์ˆ˜์ • / PATCH๋Š” ์ž์›์˜ ์ผ๋ถ€ ์ˆ˜์ • ๋ฐ ๊ต์ฒด. ์˜ˆ๋ฅผ ๋“ค์–ด DB์˜ ํŠน์ • ์ปฌ๋Ÿผ๋งŒ ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•˜๋ฉด PATCH๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ „๋ถ€ ๋‹ค ์ˆ˜์ •๋˜์–ด์•ผํ•œ๋‹ค๋ฉด PUT์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ๊ณ 

๊ทธ๋ฆผ์œผ๋กœ ๊ฐ„๊ฒฐํžˆ ํ‘œํ˜„ํ•˜์ž๋ฉด ์ด๋ ‡๋‹ค.


1. REST์˜ ๋ชฉ์ 

  • ๋ถ„์‚ฐ์‹œ์Šคํ…œ : ํ•˜๋‚˜์˜ ์ปค๋‹ค๋ž€ Application์„ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ชจ๋“ˆํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. 
  • ๋‹ค์–‘ํ•œ Client์— ๋Œ€ํ•œ ๋Œ€์‘ : ์œ„์—๋„ ์–ธ๊ธ‰ํ–ˆ๋‹ค์‹œํ”ผ, ์ตœ๊ทผ์—๋Š” ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋””๋ฐ”์ด์Šค๊ฐ€ ์กด์žฌํ•จ์œผ๋กœ์จ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ๋“ค๊ณผ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์„ ์œ„ํ•˜์—ฌ Restful API๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋งŒ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉด ์—ฌ๋Ÿฌ ๋ฐฉ์‹์˜ ํด๋ผ์ด์–ธํŠธ๋“ค์ด ์ž์œ ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2. REST์˜ ๊ตฌ์„ฑ์š”์†Œ

  • ์ž์›(Resource) : URI
  • ํ–‰์œ„(Verb) : HTTP Method
  • ํ‘œํ˜„(Representations)
๊ตฌ์„ฑ์š”์†Œ ๋‚ด์šฉ ํ‘œํ˜„ ๋ฐฉ๋ฒ•
์ž์›(Resource) ์ž์› HTTP URI
ํ–‰์œ„(Verb) ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„ HTTP Method
ํ‘œํ˜„(Representations) ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„ ๋‚ด์šฉ HTTP Message Pay Load

3. REST์˜ ํŠน์ง•

  • Server-Client ๊ตฌ์กฐ : ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„, ๋ฆฌ์†Œ์Šค๋กœ ๊ตฌ์„ฑ๋œ ์•„ํ‚คํ…์ฒ˜. ์„œ๋ฒ„๋Š” API๋งŒ ์ œ๊ณตํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ์ด๋‚˜ ์ปจํ…์ŠคํŠธ(์„ธ์…˜ ๋“ฑ)๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋“ฑ ์—ญํ• ์ด ํ™•์‹คํžˆ ๊ตฌ๋ถ„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๊ฐ„์˜ ์˜์กด์„ฑ์ด ์ค„์–ด๋“ ๋‹ค. HTTP๋ฅผ ํ†ตํ•˜์—ฌ Reqeust ์ฒ˜๋ฆฌ.
  • ๋ฌด์ƒํƒœ์„ฑ/์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Statelessness) : ์„œ๋ฒ„๋Š” ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ์— ํ•„์š”ํ•œ ์–ด๋– ํ•œ ์ปจํ…์ŠคํŠธ๋„ ์„œ๋ฒ„์˜ ์„ธ์…˜์— ๋‹ด์ง€ ์•Š๋Š”๋‹ค. ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์„ธ์…˜ ์ •๋ณด๋‚˜ ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, API Server๋Š” ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ๋งŒ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„์ด ๋‹จ์ˆœํ•ด์ง„๋‹ค.
  • ๊ณ„์ธตํ˜• ๊ตฌ์กฐ : API Server๊ฐ€ ๋‹ค์ค‘ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” REST API Server๋งŒ์„ ํ˜ธ์ถœํ•˜๋Š”๋ฐ์— ๋ฐ˜ํ•˜์—ฌ, API Server๋Š” ๋‹ค์ค‘ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ˆœ์ˆ˜ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด์€ API Server ์™ธ์— ์‚ฌ์šฉ์ž ์ธ์ฆ์ด๋‚˜ ์•”ํ˜ธํ™”(SSL) ๋“ฑ์˜ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ตฌ์กฐ์ƒ์œผ๋กœ ์œ ์—ฐ์„ฑ์„ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.
  • ์บ์‹œ ๊ฐ€๋Šฅ : REST๋Š” HTTP๋ผ๋Š” ๊ธฐ์กด ์›น ํ‘œ์ค€์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—(๋ฐ˜๋“œ์‹œ HTTP๋ฅผ ์ด์šฉํ•˜์—ฌ์•ผํ•˜๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ REST API๋Š” HTTP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์ด๋‹ค) ๊ธฐ์กด ์ธํ”„๋ผ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. HTTP ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜์˜ SSL์€ ๋ฌผ๋ก , ์บ์‹ฑ ๊ธฐ๋Šฅ๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹จ ์˜๋ฏธ์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‹œ์Šคํ…œ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ํŠธ๋žœ์žญ์…˜์ด ์กฐํšŒ์„ฑ์ธ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋ฉด, HTTP์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์บ์‹ฑํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๋Šฅ ๋ฉด์—์„œ ๋งŽ์€ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ์ „์ฒด์ ์ธ ๋„คํŠธ์›Œํฌ ์‘๋‹ต์‹œ๊ฐ„๊ณผ ์„ฑ๋Šฅ, ์„œ๋ฒ„์˜ ์ž์› ์‚ฌ์šฉ๋ฅ ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ๋‹ˆํผ ์ธํ„ฐํŽ˜์ด์Šค : ํŠน์ • ์–ธ์–ด๋‚˜ ๊ธฐ์ˆ ์— ์ข…์†๋˜์ง€ ์•Š์œผ๋ฉฐ HTTP ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ : REST API ๋ฉ”์‹œ์ง€๋งŒ ๋ณด๊ณ ๋„ ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. JSON์„ ์ด์šฉํ•˜์—ฌ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ด ๊ฐ€๋Šฅํ•˜๋‹ค.

4. REST์˜ ์žฅ๋‹จ์ 

์žฅ์ 

  • HTTP ํ”„๋กœํ† ์ฝœ ์ธํ”„๋ผ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, REST API ์‚ฌ์šฉ์„ ์œ„ํ•œ ๋ณ„๋„์˜ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • HTTP ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฒ”์šฉ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.
  • ์˜๋„ํ•˜๋Š” ๋ฐ”๊ฐ€ ๋ช…ํ™•ํ•˜๋ฏ€๋กœ, ์˜๋„๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ 

  • ํ‘œ์ค€ ๊ทœ์•ฝ์ด ์—†๋‹ค. ์•ˆํ‹ฐํŒจํ„ด์„ ํŒ๋‹จํ•˜๋Š” ๊ทผ๊ฑฐ์ธ ์•”๋ฌต์ ์ธ ๊ทœ์น™๋งŒ์ด ์กด์žฌํ•œ๋‹ค. ์ด๋Š” ์„ฑ๊ณต์ ์ธ REST API ์‚ฌ๋ก€๋ฅผ ๊ทผ๊ฑฐ๋กœ ํ•˜๋Š”๋ฐ, ๊ตฌ๊ธ€์ด๋‚˜ ์•„๋งˆ์กด, ๋„ทํ”Œ๋ฆญ์Šค ๋“ฑ์˜ ๊ธฐ์—…์ด ํ‘œ์ค€ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋‹ค.
  • ์œ„์— ์–ธ๊ธ‰ํ–ˆ๋‹ค์‹œํ”ผ, ์•ˆํ‹ฐํŒจํ„ด์œผ๋กœ ์„ค๊ณ„๋  ์ˆ˜ ์žˆ๋‹ค. ์•ˆํ‹ฐํŒจํ„ด์ด๋ž€, REST API์˜ ํŠน์ง•์„ ์ดํ•ดํ•˜์ง€ ์•Š๊ณ  REST ๋ชฉ์ ๊ณผ ์–ด๊ธ‹๋‚˜๊ฒŒ ์„ค๊ณ„ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ์•ˆํ‹ฐํŒจํ„ด์˜ ์˜ˆ๋กœ๋Š”, Update, Delete ๊ธฐ๋Šฅ์„ POST๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ/HTTP Response code๋ฅผ 2-3๊ฐœ๋งŒ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ์ด ์žˆ๋‹ค.
  • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Method๊ฐ€ 4๊ฐ€์ง€ ๋ฐ–์— ์—†๋‹ค. HTTP Method ํ˜•ํƒœ๊ฐ€ ์ œํ•œ์ ์ด๋‹ค.
  • ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š์•„ ์ง€์›์ด ์–ด๋ ต๋‹ค.

5. REST์˜ ์„ค๊ณ„๊ทœ์น™/๋””์ž์ธ ๊ฐ€์ด๋“œ

REST์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ทœ์น™ ๋‘ ๊ฐ€์ง€

  • URI์€ ์ •๋ณด์˜ ์ž์›์„ ํ‘œํ˜„ํ•œ๋‹ค.
  • HTTP Method๋Š” ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

5-1. URI์€ ์ง๊ด€์ ์œผ๋กœ

GET /users

5-2. Resource์˜ ์ด๋ฆ„์€ ๋ณต์ˆ˜ ๋ช…์‚ฌ

GET /user (X)
GET /users (O)

5-3. URI์— ํ–‰์œ„๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” Method๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

GET์ด๋ผ๋Š” method๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
GET /users/view/:id (X)
GET /users/:id (O)

5-4. ๋งˆ์ง€๋ง‰์— / ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.

GET /users/:id/ (X)
GET /users/:id (O)

5-5. ์–ธ๋”๋ฐ”(_) ๋Œ€์‹  ๋Œ€์‰ฌ(-)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•œ๋‹ค.

GET /users/:id/login-log

5-6. ์†Œ๋ฌธ์ž ์‚ฌ์šฉ

5-7. URI์— ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.

GET /users/:id/users-photos/apple.jpg (X)
GET /users/:id/users-photos/apple (O)

6. REST์˜ ์‘๋‹ต์ฝ”๋“œ

  • 200 : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ •์ƒ์ˆ˜ํ–‰ (์‘๋‹ต์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ํฌํ•จ)
  • 201 : ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์š”์ฒญ์— ๋Œ€ํ•œ ์ •์ƒ์ฒ˜๋ฆฌ
  • 202 : ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์š”์ฒญ์ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋  ๋•Œ ์‚ฌ์šฉ
  • 204 : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ •์ƒ์ˆ˜ํ–‰ (์‘๋‹ต์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€ ๋ฏธํฌํ•จ, ์‚ญ์ œ์š”์ฒญ ๋”ฐ์œ„์— ์‚ฌ์šฉ)
  • 400 : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋ถ€์ ์ ˆํ•  ๋•Œ ์‚ฌ์šฉ (๋ถ€์ ์ ˆํ•œ ์ด์œ ๋ฅผ ์‘๋‹ต Body์— ๋„ฃ์–ด์ค˜์•ผ ํ•จ)
  • 401 : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์ฆ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋ณดํ˜ธ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ
  • 403 : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์ฆ์ƒํƒœ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์‘๋‹ตํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ (400 ์‚ฌ์šฉ์„ ๊ถŒ์žฅ)
  • 404 : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉ
  • 405 : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ

References

https://meetup.toast.com/posts/92
https://blog.metafor.kr/165 
https://spoqa.github.io/2012/02/27/rest-introduction.html 
https://node-js.tistory.com/17?category=870301