๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring๐Ÿ€

Spring(์Šคํ”„๋ง) : API

by @ENFJ 2022. 9. 24.

์›น ์ง„์ž…์— ์žˆ์–ด ์ฒซ๋ฒˆ์งธ๋Š” controller ์ด๋‹ค.

spring cycle
Controller -> Service -> Mapper -> Mapper.xml ->Mapper -> Service -> Controller

Spring cycle


์Šคํ”„๋ง ์›น๊ฐœ๋ฐœ์—์„œ ๋งํ•˜๋Š” API ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

์ •์ ์ปจํ…Œ์ธ  ๋ฐฉ์‹์„ ์ œ์™ธํ•˜๋ฉด 

MVC ๋ฐฉ์‹์—์„œ View๋ฅผ ์ฐพ์•„์„œ ํ…œํ”Œ๋ฆฟ์—”์ง„์„ ํ†ตํ•ด์„œ ํ™”๋ฉด์„ ๋ Œ๋”๋งํ•˜๊ณ , html์„ ์›น๋ธŒ๋ผ์šฐ์ €์— ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค,

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ API ๋ฅผ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๐Ÿ™„ ์ฆ‰ ์ •์ ์ปจํ…์ธ  ์ œ์™ธํ•˜๋ฉด (1) HTML ๋ฐฉ์‹์œผ๋กœ ํ• ์ง€ (2) API ๋ฐฉ์‹์œผ๋กœ ํ• ์ง€ ๋งŒ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

1. @ResponseBody ์˜ ์˜๋ฏธ๋Š” HTML์— ๋‚˜์˜ค๋Š” body ํƒœ๊ทธ๋ฅผ ๋งํ•˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ HTTP์—์„œ header ์™€ body ๊ฐ€ ์žˆ๋Š”๋ฐ

HTTP์—์„œ body ๋ถ€๋ถ„์— "์ด ๋ฐ์ดํ„ฐ< return "hello" + name > ๋ฅผ ์ง์ ‘ ๋„ฃ์–ด์ฃผ๊ฒ ๋‹ค!!" ๋ผ๋Š” ์˜๋ฏธ์ž„.

 

2. @RequestParam์ด๋ž€ Controller ์—์„œ ๋งŽ์ด ๋ณด์ด๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. 

์™œ๋ƒํ•˜๋ฉด Controller๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ฐ”๋กœ @RequestParam ์ด๊ธฐ ๋–„๋ฌธ์ด๋‹ค.

- HTTP ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค
- Controller ๋ฉ”์†Œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ์›น์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ๋งตํ•‘ํ•˜๊ธฐ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค.

 

 

 

๊บผ๋‚ผ๋•Œ๋Š” getName ๋„ฃ์„๋•Œ๋Š” setName

๊ทธ๋ ‡๋‹ค๋ฉด Getter Setter ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

์ž๋ฐ” ๋นˆ ํ‘œ์ค€ ์–‘์‹์ด๋ผ๊ณ  ํ•œ๋‹ค.

 



json ์€ ํ‚ค : ์†์„ฑ(ํ‚ค) ,  ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฑฐ
ex) {"name":"spring"}

1. ์ •์ ์ปจํ…์ธ : ๊ทธ๋ƒฅ ๊ทธ๋Œ€๋กœ ํŒŒ์ผ์„ ๋‚ด๋ ค์ค€๋‹ค.
2. mvc,ํ…œํ”Œ๋ฆฟ ์—”์ง„ : ํ…œํ”Œ๋ฆฟ์—”์ง„์„ ๋ชจ๋ธ ,๋ทฐ,์ปจํŠธ๋กค๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ ์ชผ๊ฐœ์„œ ๋ทฐ๋ฅผ ํ…œํ”Œ๋ฆฟ ์—”์ง„์œผ๋กœ html์„ ์ข€๋” 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ Œ๋”๋ง ํ•ด์„œ ๋ Œ๋”๋ง์ด ๋œ html์„ ๊ณ ๊ฐ(client)์—๊ฒŒ ์ „๋‹ฌํ•ด์ค€๋‹ค
3. api : ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š”๊ฑฐ.. ๋ทฐ์—†์ด responsebody ๋กœ ํ•ด์„œ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š”๊ฑฐ.


1. ์ปจํŠธ๋กค๋Ÿฌ : ์›น MVC์˜ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• 
2. ์„œ๋น„์Šค : ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„
3. ๋ ˆํฌ์ง€ํ† ๋ฆฌ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผ, ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ db์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ
4. ๋„๋ฉ”์ธ: ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๊ฐ์ฒด, ex) ํšŒ์›, ์ฃผ๋ฌธ, ์ฟ ํฐ, ๋“ฑ๋“ฑ ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ๋จ.

 

 

๐Ÿ™„ : ์ถ”๊ฐ€ ์„ค๋ช… / ๋‚ด ์ƒ๊ฐ

 

1. ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ (localhost:8080)์š”์ฒญ์ด ์˜ค๋ฉด  spring controller ์•ˆ์— ๊ด€๋ จ controller ๊ฐ€ ์žˆ๋Š”์ง€ ๋จผ์ € ์ฐพ๋Š”๋‹ค.

๊ด€๋ จ Controller ๊ฐ€ ์—†๋‹ค๋ฉด Static ํŒŒ์ผ์„ ์ฐพ๋„๋ก ๋˜์–ด์žˆ๋‹ค.

๐Ÿ™„ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ localhost:8080์œผ๋กœ ์š”์ฒญ์ด ๋“ค์–ด์™”์„๋•Œ controller๊ฐ€ ์—†๋‹ค๋ฉด static ํŒŒ์ผ์ธ html ํŒŒ์ผ์ด ์‹คํ–‰๋˜์ง€๋งŒ,

Controller๊ฐ€ ์žˆ๋‹ค๋ฉด html ํŒŒ์ผ์€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.