Backend/Spring

Top 10 REST Interview Questions for Java and Spring Developers(Java์™€ Spring ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ 10๊ฐœ์˜ REST ๋ฉด์ ‘ ์งˆ๋ฌธ)

Seyun(Marco) 2024. 4. 24. 23:06
728x90

๐Ÿ’ก ์›๋ณธ๊ธ€

Top 10 REST Interview Questions for Java and Spring Developers

 

Top 10 REST Interview Questions for Java and Spring Developers

These are the best REST Interview Questions for Java and Spring developers to prepare quickly

medium.com

 

์—ฌ๋Ÿฌ๋ถ„ ์•ˆ๋…•ํ•˜์„ธ์š”. Java, Spring ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Spring REST ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ์ฐพ๊ณ  ๊ณ„์‹ ๋‹ค๋ฉด ์ด ๊ธ€์— ์ž˜ ์ฐพ์•„์™”์Šต๋‹ˆ๋‹ค.

์ด์ „์—, ์ €๋Š” Spring ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘์„ ์œ„ํ•ด ์ค€๋น„ํ•ด์•ผ ํ•  13๊ฐ€์ง€ ํ•„์ˆ˜ ์ฃผ์ œ์™€ Spring FrameworkSpring MVCSpring SecuritySpring Data JPASpring AOPSpring BootSpring TestHibernateSpring Boot ActuatorSpring CloudMicroservices ๋“ฑ ๋‹ค์–‘ํ•œ ์ฃผ์ œ์— ๋Œ€ํ•ด ๋งŽ์€ ์งˆ๋ฌธ์„ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Spring Framework์—์„œ REST API๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ REST์— ๊ด€ํ•ด ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ์— ๋Œ€ํ•ด ๊ณต์œ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด ๊ธ€์€ ๋ชจ๋“  REST ๊ด€๋ จ ์งˆ๋ฌธ์„ ํฌ๊ด„ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, Spring Professional ์ธ์ฆ ๊ฐ€์ด๋“œ์—์„œ ๊ฐ€์ ธ์˜จ ์งˆ๋ฌธ์„ ํฌํ•จํ•˜์—ฌ ํ•„์ˆ˜์ ์ธ REST ๊ฐœ๋…๋“ค์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋ฉด์ ‘์— ๋น ๋ฅด๊ฒŒ ์ฐธ์—ฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์ด REST ์งˆ๋ฌธ ๋ชฉ๋ก์„ ๋น ๋ฅด๊ฒŒ ํ›‘์–ด๋ณด์‹œ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ 5๋ถ„ ์ด๋‚ด์— ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„์ด ๋” ์žˆ๋‹ค๋ฉด ์ €์˜ ์ฑ… “Grokking the Spring Interview”๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š”. ์ด ์ฑ…์—์„œ๋Š” ๋‹ค์–‘ํ•œ Spring ์ฃผ์ œ์— ๋Œ€ํ•ด 200๊ฐœ ์ด์ƒ์˜ ์งˆ๋ฌธ์„ ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ friends20์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 20$ ํ• ์ธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, Spring์ด ์ฒ˜์Œ์ด๊ณ  Spring ๊ฐœ๋…์„ ๊ตฌ์ถ•ํ•  ์ตœ๊ณ ์˜ ๊ฐ•์˜๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด Undemy์˜ Spring and Hibernate for Beginners(includes Spring Boot)๋ฅผ ์ ๊ทน ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋กœ Spring, Hibernate, Spring Boot ์„ธ๊ฐ€์ง€ ๋ชจ๋‘ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Java์™€ Spring ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ 11๊ฐ€์ง€ REST ๋ฉด์ ‘ ์งˆ๋ฌธ

๋” ์ด์ƒ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๊ณ , Java์™€ Spring ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘์—์„œ ์ž์ฃผ ๋ฌป๋Š” REST ๋ฉด์ ‘ ์งˆ๋ฌธ๋“ค์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ๋“ค์€ REST API, REST ๊ฐœ๋… ๋ฐ REST ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ง€์‹์„ ํ…Œ์ŠคํŠธ ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” Spring MVC์— ์ค‘์ ์„ ๋‘” Spring ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ์‚ดํŽด๋ณด์•˜๊ณ , ์ด์ œ Spring MVC ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RESTful ์›น ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ REST ๊ฐœ๋…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ช‡๊ฐ€์ง€ ์งˆ๋ฌธ์„ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1. REST๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

REST๋Š” Representational State Transfer์˜ ์•ฝ์ž๋กœ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์„œ๋ฒ„๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ๋ณด๋‚ด๋Š” ๋ฐ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ JSON, XML์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ REST์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋จผ์ € REST API ๋””์ž์ธ ๋ฐ ๊ฐœ๋ฐœ์„ ํ™•์ธํ•˜์—ฌ ์ด์— ๋Œ€ํ•ด ๋” ์ž˜ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

2. ๋ฆฌ์†Œ์Šค๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฆฌ์†Œ์Šค๋Š” REST ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฆฌ์†Œ์Šค๋กœ ๋…ธ์ถœํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ๊ณ (GET), ์ƒ์„ฑํ•˜๊ณ (POST), ์ˆ˜์ •ํ•˜๊ณ (PUT), ์‚ญ์ œ(DELETE) ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์•ˆ์ „ํ•œ REST ์ž‘์—…์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

REST API๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” HTTP ์ž‘์—…์€ ์•ˆ์ „ํ•œ ์ž‘์—…์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, GET๊ณผ HEAD๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— PUT, POST, DELETE๋Š” ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

4. ๋ฉฑ๋“ฑ์„ฑ ์ž‘์—…์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์™œ ๋ฉฑ๋“ฑ์„ฑ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๊นŒ?

์ผ๋ถ€ HTTP ๋ฉ”์„œ๋“œ๋Š” GET๊ณผ ๊ฐ™์ด ๋ช‡๋ฒˆ์„ ์‚ฌ์šฉํ•ด๋„ ๊ฐ™์€ ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, ๋™์ผํ•œ URI์— ์—ฌ๋Ÿฌ๋ฒˆ GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ๋ถ€์ž‘์šฉ ์—†์ด ๋™์ผํ•œ ์‘๋‹ต ๊ฒฐ๊ณผ๋กœ ์–ป์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฉฑ๋“ฑ(idempotent)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— POST๋Š” ๋ฉฑ๋“ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ POST ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ์ž์›์ด ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ PUT์€ ๋ฉฑ๋“ฑ์ž…๋‹ˆ๋‹ค. PUT์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์›์„ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๋ฒˆ PUT ์š”์ฒญ์„ ๋ณด๋‚ด๋„ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ฒˆ์˜ PUT ์š”์ฒญ๋„ ์„œ๋ฒ„์˜ ์ž์›์— ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ™์€ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. HTTP ํ”„๋กœํ† ์ฝœ์˜ ๋ฉฑ๋“ฑ ๋ฉ”์„œ๋“œ์™€ HTTP ์ผ๋ฐ˜์— ๋Œ€ํ•ด ๋” ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด Pluralsight์˜ HTTP ๊ธฐ์ดˆ ๊ณผ์ •์„ ์ˆ˜๊ฐ•ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

5. REST๋Š” ํ™•์žฅ์„ฑ์ด ์žˆ๊ณ  ์ƒํ˜ธ ์šด์šฉ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

๋„ค. REST๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์ƒํ˜ธ ์šด์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋‚˜ ์„œ๋ฒ„ ์ธก์—์„œ ํŠน์ • ๊ธฐ์ˆ ์„ ์ง€์ •ํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค. RESTful ์›น ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Java, C++, Python, JavaScript ๋“ฑ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. REST API์— ๋Œ€ํ•ด ๋” ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” RESTful ์›น ์„œ๋น„์Šค์™€ ๊ฐ™์€ ์ข‹์€ ์ฑ…์„ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

6. REST์—์„œ ์‚ฌ์šฉํ•˜๋Š” HTTP ๋ฉ”์„œ๋“œ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

REST๋Š” ๋ชจ๋“  HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋Š” ์ž์›์„ ์กฐํšŒํ•˜๋Š” GET, ์ž์›์„ ์ƒ์„ฑํ•˜๋Š” POST, ์ž์›์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” PUT, ์ž์›์„ ์ œ๊ฑฐํ•˜๋Š” DELETE ์ž…๋‹ˆ๋‹ค.

7. REST๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ stateless(๋ฌด์ƒํƒœ)์ธ๊ฐ€์š”? (์ •๋‹ต)

๋„ค. REST API๋Š” HTTP๊ฐ€ ๊ทธ๋Ÿฌํ•˜๋“ฏ stateless(๋ฌด์ƒํƒœ)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. REST API์—์„œ์˜ ์š”์ฒญ์€ ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ์„ธ๋ถ€์‚ฌํ•ญ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋˜๋Š” ๋‹ค์Œ ์š”์ฒญ ๋˜๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ์œ ์ง€๋˜๋Š” ์ผ๋ถ€ ๋ฐ์ดํ„ฐ(์„ธ์…˜ ๋“ฑ)์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

REST ์‚ฌ์–‘์€ stateless(๋ฌด์ƒํƒœ)๋ฅผ ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ๋‘๊ณ  ์žˆ์œผ๋ฉฐ, REST API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ด๋ฅผ ์—ผ๋‘ํ•ด ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

8. ์„ฑ๊ณต์ ์ธ DELETE ์š”์ฒญ์— ๋Œ€ํ•œ HTTP ์ƒํƒœ ๋ฐ˜ํ™˜ ์ฝ”๋“œ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? (์ •๋‹ต)

์„ฑ๊ณต์ ์ธ DELETE ํ›„์— REST API๊ฐ€ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•  ์ƒํƒœ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ๊ทœ์น™์€ ์—†์Šต๋‹ˆ๋‹ค. 200 Ok ๋˜๋Š” 204 No Content๋ฅผ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ, DELETE ์š”์ฒญ์ด ์„ฑ๊ณต์ ์ด๊ณ  ์‘๋‹ต ๋ณธ๋ฌธ์ด ๋น„์–ด ์žˆ์œผ๋ฉด 204 No Content๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ๋ณธ๋ฌธ์ด ๋น„์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด 200 Ok๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ REST API ๊ฐœ๋…๊ณผ ํ‘œ์ค€์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด Udemy์—์„œ ์ œ๊ณตํ•˜๋Š” REST API ๋””์ž์ธ, ๊ฐœ๋ฐœ ๋ฐ ๊ด€๋ฆฌ ๊ฐ•์˜์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

9. CRUD๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

CRUD๋Š” ์ƒ์„ฑ(Create), ์ฝ๊ธฐ(Read), ์ˆ˜์ •(Update), ์‚ญ์ œ(Delete)์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค. REST API์—์„œ๋Š” POST๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์›์„ ์ƒ์„ฑํ•˜๊ณ , GET์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์›์„ ์ฝ์œผ๋ฉฐ, PUT์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์›์„ ์ˆ˜์ •ํ•˜๊ณ , DELETE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์›์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ์€ 1๋…„์—์„œ 3๋…„ ์ •๋„ ๊ฒฝํ—˜์ด ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์‚ฌ์ด์—์„œ ํ”ํžˆ ๋‚˜์˜ค๋Š” ์ดˆ๊ธ‰ ๋ ˆ๋ฒจ์˜ Spring MVC ์งˆ๋ฌธ ์ค‘ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค.

10. REST๋Š” ์•ˆ์ „ํ•œ๊ฐ€์š”? ์–ด๋–ป๊ฒŒ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? (๋‹ต๋ณ€)

์ด ์งˆ๋ฌธ์€ ์ฃผ๋กœ REST์™€ Spring์— ๋Œ€ํ•œ 2๋…„์—์„œ 5๋…„ ์‚ฌ์ด์˜ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ๊ฒฝํ—˜ ๋งŽ์€ Java ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์—๊ฒŒ ์ž์ฃผ ๋ฌป์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ์ด๋ž€ ์šฉ์–ด๋Š” ๋„“์€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”์‹œ์ง€์˜ ๋ณด์•ˆ์„ ์•”ํ˜ธํ™”๋กœ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ์ธ์ฆ๊ณผ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ ‘๊ทผ ์ œํ•œ์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ, Spring Security๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ Spring Security ์„ค์ • ํŒŒ์ผ์—์„œ HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTTP ๊ธฐ๋ณธ ์ธ์ฆ์„ ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๊ธฐ๋ณธ ์„œ๋ฒ„๊ฐ€ HTTPS๋ฅผ ์ง€์›ํ•œ๋‹ค๋ฉด HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ REST API๋ฅผ ๊ณต๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

11. REST๋Š” ์ „์†ก ๊ณ„์ธต ๋ณด์•ˆ(TLS)๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋‚˜์š”? (๋‹ต๋ณ€)

์ „์†ก ๊ณ„์ธต ๋ณด์•ˆ(TLS)์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์•ˆ์ „ํ•œ ํ†ต์‹ ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” SSL(๋ณด์•ˆ ์†Œ์ผ“ ๊ฒŒ์ธต)์˜ ํ›„์† ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. HTTPS๊ฐ€ SSL๊ณผ TLS ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์— REST๋„ TLS์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค, REST์—์„œ๋Š” ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์„œ๋ฒ„์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ SSL์„ ์ง€์›ํ•œ๋‹ค๋ฉด, ๊ฐ™์€ RESTful ์›น ์„œ๋น„์Šค์— HTTP์™€ HTTPS๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tomcat์„ ์‚ฌ์šฉํ•˜๊ณ  ์ž‡๋‹ค๋ฉด, Tomcat์—์„œ SSL์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ์•Œ์•„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ƒ์œผ๋กœ ์ดˆ๋ณด์ž์™€ ๊ฒฝํ—˜ ๋งŽ์€ Java JEE ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ž์ฃผ ๋ฌป๋Š” Spring REST ๋ฉด์ ‘ ์งˆ๋ฌธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ๋“ค์€ VMware์˜ Spring ์ „๋ฌธ๊ฐ€ ์ธ์ฆ์„ ์ค€๋น„ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ Spring REST์— ๋Œ€ํ•œ ์ง€์‹์„ ๋‹ค์‹œ ํ™•์ธํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ Spring ์†Œ๊ฐœ ๋ฐ ๋ฉด์ ‘ ์งˆ๋ฌธ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์„ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด Spring REST ๋ฉด์ ‘ ์งˆ๋ฌธ๋“ค์ด ๋งˆ์Œ์— ๋“œ์‹ ๋‹ค๋ฉด ๊ณต์œ ํ•ด์ฃผ์„ธ์š”.

P.S. ์Šคํ”„๋ง์— ์ฒ˜์Œ ์ ‘๊ทผํ•˜๋Š” ๋ถ„์ด๋ผ๋ฉด ์Šคํ”„๋ง ๊ฐœ๋…์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๊ณ ์˜ ์Šคํ”„๋ง ๊ฐ•์˜๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด Udemy์˜ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์Šคํ”„๋ง๊ณผ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ(์Šคํ”„๋ง ๋ถ€ํŠธ ํฌํ•จ) ๊ฐ•์˜๋ฅผ ๊ฐ•๋ ฅํžˆ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์ขŒ๋Š” ์Šคํ”„๋ง, ํ•˜์ด๋ฒ„๋„ค์ดํŠธ, ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ชจ๋‘๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

728x90
728x90