๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

ํฌ์ŠคํŠธ๋งจ(API ํ…Œ์ŠคํŠธ) ํ™œ์šฉํ•˜๊ธฐ

by ์ฃผ๋ฐœ2 2021. 12. 5.
๋ฐ˜์‘ํ˜•

๐Ÿ“Ž  ๊ธ€๋˜ 6๊ธฐ ํฌ์ŠคํŒ…

1. ๋ฏธ์น˜๋„๋ก ๋”์› ๋˜ 7์›”์˜ ํšŒ๊ณ 

 

2. ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•  ๋•Œ์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ

 

3. Spring AOP - (1) ํ”„๋ก์‹œ ํŒจํ„ด, ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด

 

4. [MySQL] - ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation level)

 

5. Spring AOP - (2) AOP ๊ฐœ๋… ๋ฐ ์‹ค์Šต

 

6. ์ธํ…”๋ฆฌ์ œ์ด(IntelliJ) - ๋””๋ฒ„๊น…(Debugging) ํ•˜๊ธฐ

 

7. [Java, ๋””์ž์ธํŒจํ„ด] - ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด(Singleton Pattern)

 

8. ์›”๊ฐ„ ์ฝ”๋“œ๋ฆฌ๋ทฐ Ver_0.1: ์ปค๋ฆฌ์–ด ์„ฑ์žฅ CODE ์„ธ๋ฏธ๋‚˜ ์ •๋ฆฌ

 

9. ํฌ์ŠคํŠธ๋งจ(API ํ…Œ์ŠคํŠธ) ํ™œ์šฉํ•˜๊ธฐ

 

10. ๋œป๊นŠ์€ 2021๋…„ ํšŒ๊ณ 


 

๐Ÿ“Ž ํฌ์ŠคํŠธ๋งจ ํ™œ์šฉํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ํฌ์ŠคํŠธ๋งจ์—์„œ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๊ทธ๋™์•ˆ ํฌ์ŠคํŠธ๋งจ์„ API๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์™ธ์—๋„ API ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ , ํ™˜๊ฒฝ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”, ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ข€ ๋” ๋‹ค๋ฐฉ๋ฉด์œผ๋กœ ํฌ์ŠคํŠธ๋งจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํฌ์ŠคํŠธ๋งจ์— ๋Œ€ํ•ด ๋จผ์ € ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด, ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster.

https://www.postman.com/

์š”์•ฝํ•ด๋ณด์ž๋ฉด, API๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

ํฌ์ŠคํŠธ๋งจ์„ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š” ~

https://binit.tistory.com/17

 

ํฌ์ŠคํŠธ๋งจ(Postman) ์‚ฌ์šฉ๋ฒ•๊ณผ API ์‹คํ–‰ํ•ด ๋ณด๊ธฐ

ํฌ์ŠคํŠธ๋งจ์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ API๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•œ๋‹ค. API์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ๋ธŒ๋ผ์šฐ์ €์— ์ง์ ‘ API URL์„ ์ž‘์„ฑํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ

binit.tistory.com

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํฌ์ŠคํŠธ๋งจ์—์„œ API ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ณ , ๋ณ€์ˆ˜ ๋ฐ ํ™˜๊ฒฝ๋ณ„๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

๐Ÿ“Ž  ๋ฐฐ๊ฒฝ


์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

ํ‰์†Œ์— ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋กœ์ปฌ์—์„œ๋งŒ ๊ฐœ๋ฐœํ•˜๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋ฉด ์ƒ๊ด€์—†์ง€๋งŒ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๋กœ์ปฌ ํ™˜๊ฒฝ, ์ƒ์šฉ ํ™˜๊ฒฝ ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ API๋ฅผ ๋งŒ๋“ค๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌ๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ ๋งˆ๋‹ค URI์™€ Request, ๊ธฐํƒ€ ์ •๋ณด(ํ† ํฐ ๋“ฑ) ๋“ฑ์„ ๋ณ„๋„๋กœ ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ง์ด์ฃ ..

์œ„์™€ ๊ฐ™์„๋•Œ ํ•œ ๊ฐœ์˜ API๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„  ๊ฐ ํ™˜๊ฒฝ๋ณ„๋กœ ์ด 3๊ฐœ์˜ API๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

API๊ฐ€ ์–ผ๋งˆ ๋˜์ง€์•Š๋Š”๋‹ค๋ฉด ๋ฒˆ๊ฑฐ๋กญ๊ธด ํ•ด๋„ ๋ฌธ์ œ๋˜์ง€๋Š” ์•Š๊ฒ ์œผ๋‚˜.. ์ˆ˜์‹ญ ์ˆ˜๋ฐฑ๊ฐœ๊ฐ€ ๋œ๋‹ค๋ฉด? API ๊ฐฏ์ˆ˜ * 3 ๋งŒํผ ๋ฐ˜๋ณต์ ์ธ ๋…ธ๊ฐ€๋‹ค๋ฅผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํฌ์ŠคํŠธ๋งจ์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

๐Ÿ“Ž  ๋ฐฉ๋ฒ•

๊ทธ๋Ÿผ ์ด์ œ ํฌ์ŠคํŠธ๋งจ์—์„œ ์œ„์™€๊ฐ™์€ ๋ถˆ์ƒ์‚ฌ๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด ํ™˜๊ฒฝ ๋ณ„ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํฌ์ŠคํŠธ๋งจ์„ ์‹คํ–‰ํ•œ ํ›„ ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋ˆˆ(?) ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ›„ Add ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

 

 

๊ทธ ํ›„ ํ™˜๊ฒฝ ์ด๋ฆ„(Dev, Prod)๊ณผ ๋ณ€์ˆ˜(X-Code, X-Token) ๋“ฑ์„ ์ž‘์„ฑํ•˜๊ณ  ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

 

 

Request๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์œ„์—์„œ ์„ค์ •ํ•œ ํ™˜๊ฒฝ ๋ฐ ๋ณ€์ˆ˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

(1) ๋ถ€๋ถ„์—์„œ ๋จผ์ € ํ•„์š”ํ•œ ํ™˜๊ฒฝ(Dev / Local / Prod)์„ ์„ ํƒํ•˜๊ณ , ์„ค์ •ํ•œ ๋ณ€์ˆ˜๊ฐ’์„ ์•„๋ž˜์™€ ๊ฐ™์ด {{ }} ์•ˆ์— ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

์„ค์ •ํ•œ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ณ€์ˆ˜ ๊ฐ’์ด ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

Host

ํ˜ธ์ŠคํŠธ ๋˜ํ•œ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋ณดํ†ต ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ๋Š” localhost๋ฅผ, AWS์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ๋Š” ํŠน์ • IP๊ฐ€ ์ง€์ •์ด ๋˜๋Š”๋ฐ์š”, ์ด๋•Œ๋„ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„ ์‚ฌ์ง„์€ ๋กœ์ปฌ ํ™˜๊ฒฝ์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ ์„ค์ •ํ•œ localhost ์ž…๋‹ˆ๋‹ค.

 

์œ„ ์‚ฌ์ง„์€ ์ƒ์šฉ(์šด์˜) ํ™˜๊ฒฝ์—์„œ ์„ค์ •ํ•œ Host์ž…๋‹ˆ๋‹ค.

 

์‹ค์ œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ๋Š” ์œ„์—์„œ ์„ค์ •ํ•œ ๋ณ€์ˆ˜๋ช…์„ ์ง€์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ดํ›„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” Dev๋ฅผ, ์ƒ์šฉ ํ™˜๊ฒฝ์—์„œ๋Š” Prod๋ฅผ ์ง€์ •ํ•ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

๐Ÿ“Ž  ์ถ”๊ฐ€

์ถ”๊ฐ€์ ์œผ๋กœ ํฌ์ŠคํŠธ๋งจ์—์„œ ์„ค์ •ํ•œ ์ •๋ณด๋“ค์„ Exportํ•ด์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Collections ์šฐํด๋ฆญ > Export ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

 

 

๊ทธ ํ›„ ์›ํ•˜๋Š” ๋ฒ„์ „์„ ํด๋ฆญํ•˜๊ณ  Export๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŒŒ์ผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์œ„ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ๋Š” ํฌ์ŠคํŠธ๋งจ์—์„œ Import๋ฅผ ํ•œ ๋’ค Exportํ•œ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ“Ž  ์ •๋ฆฌ

์ด์ƒ์œผ๋กœ ํฌ์ŠคํŠธ๋งจ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ €๋Š” API๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ๋•Œ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ ํฌ์ŠคํŠธ๋งจ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ์š”, ์ด๋ฒˆ ๊ธฐํšŒ์— ์ข€ ๋” ํฌ์ŠคํŠธ๋งจ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ์—๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ๋“ค๊ณผ ํ•จ๊ป˜ ํฌ์ŠคํŒ…ํ•˜๋„๋ก ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€