[Spring ๊ธฐ์ดˆ] API

hamsangยท2022๋…„ 7์›” 25์ผ
1

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
3/12
post-custom-banner

๐Ÿ’ป Spring Boot๋ฅผ ํ™œ์šฉํ•œ ์›น ๊ฐœ๋ฐœ์˜ ์ข…๋ฅ˜

  1. ์ •์ ์ปจํ…์ธ  (static content)
  2. MVC + Template Engine
  3. API

๐Ÿ“API

API๋ž€ Application Programming Interface์˜ ์•ฝ์ž๋กœ, ์–ด๋–ค ์„œ๋ฒ„์˜ ํŠน์ •ํ•œ ๋ถ€๋ถ„์— ์ ‘์†ํ•ด์„œ ๊ทธ ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋„๊ตฌ์ด๋‹ค.


๐Ÿ’ป ์‹ค์Šต

@ResponseBody ๋ฌธ์ž ๋ฐ˜ํ™˜

@ResponseBody๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ทฐ ๋ฆฌ์กธ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , BODY์— ๋ฌธ์ž ๋‚ด์šฉ์„ ์ง์ ‘ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (HTML BODY ํƒœ๊ทธ ์•„๋‹˜!)

localhost:8080/hello-string?name=spring! ์„ ์š”์ฒญํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

MVC + ํ…œํ”Œ๋ฆฟ ์—”์ง„๊ณผ์˜ ์ฐจ์ด์ ์ด ๋ญ˜๊นŒ! ๋ฐ”๋กœ ํŽ˜์ด์ง€ ์†Œ์Šค์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

@ResponseBody๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, view Reosolver๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฌธ์ž ๊ทธ๋Œ€๋กœ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค.

MVC + ํ…œํ”Œ๋ฆฟ ์—”์ง„์œผ๋กœ ์ฒ˜๋ฆฌํ•œ ํŽ˜์ด์ง€์˜ ์†Œ์Šค๋‹ค.


@ResponseBody ๊ฐ์ฒด ๋ฐ˜ํ™˜

๋ฌธ์ž๋ฅผ ๋ฐ›์„ ๋•Œ์™€๋Š” ๋‹ค๋ฅธ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋๋‹ค. JSON์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด {ํ‚ค:๊ฐ’} ์Œ์œผ๋กœ ๋ฐ˜ํ™˜๋œ ๊ฒƒ์ด๋‹ค.


๐Ÿ”— MVC + ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๋™์ž‘ ๊ณผ์ •

  1. ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ localhost:8080/hello-api๋ฅผ ์š”์ฒญํ•œ๋‹ค.
  2. ์Šคํ”„๋ง ๋ถ€ํŠธ ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ๋ฒ„๊ฐ€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ hello-api๋ฅผ ๋ณด๋‚ธ๋‹ค.
  3. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ hello-api ๋งคํ•‘์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค
  4. @ResponseBody์ผ ๋•Œ ๋ฐ˜ํ™˜ ๊ฐ’์ด ๋ฌธ์ž์ธ ๊ฒฝ์šฐ, ๋ณ€ํ™˜ ์—†์ด HTTP์˜ body๋กœ ๋ฐ”๋กœ ๋ฐ˜ํ™˜
  5. @ResponseBody์ผ ๋•Œ ๋ฐ˜ํ™˜ ๊ฐ’์ด ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ, JSON ๋ฐฉ์‹์œผ๋กœ ๋ฐ˜ํ™˜ (default)

@ResonseBody๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด veiwResolver ๋Œ€์‹  HttpMessageConverter๊ฐ€ ๋™์ž‘ํ•œ๋‹ค.

๐Ÿ“ HttpMessageConverter

  • StringHttpMessageConverter : ๊ธฐ๋ณธ ๋ฌธ์ž์ฒ˜๋ฆฌ
  • MappingJackson2HttpMassageConverter : ๊ธฐ๋ณธ ๊ฐ์ฒด์ฒ˜๋ฆฌ
profile
ํ–„์ƒ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€