Loading...
2021. 5. 16. 10:25

[Spring boot] Spring ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•๊ณผ @SpringBootTest

์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ๊นŒ์š”? ์ œ๊ฐ€ ์ฒ˜์Œ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋‚˜์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ํฐ ์˜๋ฌธ์ ์ด ๋“ค์—ˆ๋˜ ์œ ํ˜•์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ–ˆ์„ ๋•Œ๋Š” Unit Test์™€ Instrument Test ๋‘ ๊ฐ€์ง€๋ฅผ ์ง„ํ–‰ํ–ˆ๊ณ , ๊ฐ๊ฐ DB I/O ํ…Œ์ŠคํŠธ์™€ UI/UX ๋™์ž‘ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์–ด๋–จ๊นŒ์š”? ๋Œ€ํ‘œ์ ์ธ Spring boot๋ฅผ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ ๋‹ค๋ค„๋ณผํ…๋ฐ, Spring boot์—์„œ๋Š” JUnit ์ด๋ผ๋Š” ํ…Œ์ŠคํŠธ ๋„๊ตฌ์™€ Mockito๋ผ๋Š” Mock ๊ฐ์ฒด ์ƒ์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ์„œ 3๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Spring boot์˜ ํ…Œ์ŠคํŠธ ๋ถ„๋ฅ˜ https:..

2021. 5. 2. 19:38

[FastAPI] 10. Middleware๋ฅผ ์ด์šฉํ•œ ์ „ํ›„ ์ฒ˜๋ฆฌ

API๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์–ด๋Š ์ •๋„ ์†Œ๋ชจ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๊ฑฐ๋‚˜ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์•˜์„ ๋•Œ ๋ฐ›์€ EndPoint์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”? Middleware Spring์—์„œ๋Š” Intercepter, Filter์™€ ๊ฐ™์€ ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด, Flask์—์„œ๋Š” App Context ์ค‘ after_request๋‚˜ before_request ๋“ฑ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. FastAPI์—๋Š” Middleware ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Middleware ํŒจํ„ด์€ API ํ˜ธ์ถœ ์ „ํ›„๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋‚˜์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๋‚œ ๋’ค, API Router๋กœ ์š”์ฒญ์„ ๋„˜๊ธฐ๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์ด ์š”์ฒญ์€ ๋จผ์ € Middleware์—์„œ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ..

2021. 4. 11. 22:27

[Programming] Reactive (๋ฆฌ์•กํ‹ฐ๋ธŒ)

์›น ์„œ๋น„์Šค์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ API ๊ฒฐ๊ณผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ n๊ฐœ์˜ API ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ”ํžˆ ์šฐ๋ฆฌ๊ฐ€ SPA๋ฅผ ๊ฐ€์ง€๊ณ  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด ์—ฌ๋Ÿฌ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ผ์ด ์žˆ๋Š”๋ฐ, ์ด์™€ ๋น„์Šทํ•œ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค. Reactive Programming์ด ๋‚˜์˜ค๊ธฐ ์ด์ „, ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ทธ๋ƒฅ ์ˆ˜์‹ญ๋Œ€ ์„œ๋ฒ„๋ฅผ ๊ฐ€์ง€๊ณ  GB ์ •๋„์˜ ๋ฐ์ดํ„ฐ, ๋ช‡ ์ดˆ ๊ฑธ๋ฆฌ๋Š” ์‘๋‹ต ์‹œ๊ฐ„, ์œ ์ง€๋ณด์ˆ˜๋Š” ๋ช‡ ์‹œ๊ฐ„ ๊ฑธ๋ฆฌ๋Š” ์ •๋„๊ฐ€ ๋‹น์—ฐํ•˜๋‹ค. ๋ผ๊ณ  ๋ณด๊ณ  ์šด์˜์„ ํ•ด์™”์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์–ด๋–จ๊นŒ์š”? ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๊ฐ€ ์žˆ๊ณ , ํŠนํžˆ ํ•œ๊ตญ์—์„œ๋Š” ์ธํ„ฐ๋„ท ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ์ˆ˜ ์ดˆ๋ผ๋„ ๊ฑธ๋ฆฌ๋ฉด ๊ทธ๋ƒฅ ๋‹ซ์•„๋ฒ„๋ฆฌ๋Š” ๊ฒŒ ๊ด€์Šต์ด ๋˜์–ด๋ฒ„๋ ธ์ฃ . ์ด๋ ‡๊ฒŒ ๋ณ€ํ™”๊ฐ€ ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ๋Š˜์–ด๋‚œ ๋ฐ์ดํ„ฐ ์‹œ..

2021. 4. 4. 12:52

[FastAPI] 9. Persistence Layer ๊ตฌ๊ฐ„์„ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ฒซ ํฌ์ŠคํŠธ์—์„œ ์šฐ๋ฆฌ๋Š” FastAPI๊ฐ€ ASGI ๊ธฐ๋ฐ˜์˜ uvicorn์„ ์ด์šฉํ•˜์—ฌ uvloop์— ๊ธฐ๋ฐ˜ํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ API ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณต๊ต๋กญ๊ฒŒ๋„ Database Connection์—์„œ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ด์ฃผ์ง€ ์•Š์•„ API ์š”์ฒญ ๋‹จ์—๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ๋„ DB์— ์•ก์„ธ์Šค ํ•˜๋Š” ๊ตฌ๊ฐ„์€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Blocking์ด ๋ฐœ์ƒํ•˜๊ณ , ๋‹ค์Œ ์š”์ฒญ์ด ๊ณ„์† ๋Œ€๊ธฐ ๋˜๋Š” ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Python DB API ๊ทธ๋ ‡๋‹ค๋ฉด ํŒŒ์ด์ฌ์€ ์–ด๋–ค์‹์œผ๋กœ Database์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ์š”? Java์˜ ๊ฒฝ์šฐ๋Š” JDBC๋ผ๋Š” Database Connector๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ Database ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฒŒ ๊ฐ€๋Šฅํ•œ๋ฐ์š”. Pyt..

2021. 3. 27. 14:24

[Spring boot] Axon Framework ๋ง›๋ณด๊ธฐ

์ด๋ฒˆ ํฌ์ŠคํŠธ๋ถ€ํ„ฐ Spring์„ ์ด์šฉํ•œ CQRS์— ๋Œ€ํ•ด ์ ์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ช‡ ํŒŒํŠธ๊ฐ€ ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ์šฐ๋ฆฌ๋Š” MSA์˜ ํŠธ๋žœ์žญ์…˜ ์ด์•ผ๊ธฐ ์ค‘ ์ด๋ฒคํŠธ ์†Œ์‹ฑ๊ณผ CQRS์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. 2021.03.21 - [Architecture/MSA] - [MSA] 7. MSA์˜ ํŠธ๋žœ์žญ์…˜ ์ด์•ผ๊ธฐ 3 - ์ด๋ฒคํŠธ ์†Œ์‹ฑ๊ณผ CQRS [MSA] 7. MSA์˜ ํŠธ๋žœ์žญ์…˜ ์ด์•ผ๊ธฐ 3 - ์ด๋ฒคํŠธ ์†Œ์‹ฑ๊ณผ CQRS ์ด๋ฒคํŠธ ์†Œ์‹ฑ์„ ์ฒ˜์Œ ์ ‘ํ•˜๊ฒŒ ๋œ ๊ฒƒ์€ 2017 SpringCamp์—์„œ์˜€์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ์—๋Š” MSA๋ผ๋Š” ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž˜ ์•Œ์ง€๋„ ๋ชปํ–ˆ๊ณ , MSA๋Š” ๋Œ€๊ธฐ์—…์—์„œ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๊ณ , ์ ์šฉ๊ฐ€๋Šฅํ•œ ์—„์ฒญ๋‚˜๊ฒŒ ํฐ ์•„ํ‚คํ…์ฒ˜์˜€๋‹ค. ๋ผ๊ณ ๋งŒ ์ธ blog.neonkid.xyz CQRS์™€ ์ด๋ฒคํŠธ ์†Œ์‹ฑ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์ œ๋Œ€๋กœ ์ดํ•ด๋˜์—ˆ์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ..

2021. 3. 21. 12:16

[MSA] 7. MSA์˜ ํŠธ๋žœ์žญ์…˜ ์ด์•ผ๊ธฐ 3 - ์ด๋ฒคํŠธ ์†Œ์‹ฑ๊ณผ CQRS

์ด๋ฒคํŠธ ์†Œ์‹ฑ์„ ์ฒ˜์Œ ์ ‘ํ•˜๊ฒŒ ๋œ ๊ฒƒ์€ 2017 SpringCamp์—์„œ์˜€์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ์—๋Š” MSA๋ผ๋Š” ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž˜ ์•Œ์ง€๋„ ๋ชปํ–ˆ๊ณ , MSA๋Š” ๋Œ€๊ธฐ์—…์—์„œ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๊ณ , ์ ์šฉ๊ฐ€๋Šฅํ•œ ์—„์ฒญ๋‚˜๊ฒŒ ํฐ ์•„ํ‚คํ…์ฒ˜์˜€๋‹ค. ๋ผ๊ณ ๋งŒ ์ธ์‹ํ•˜๊ณ  ๋ฌด์ž‘์ • ๋ฐฐ์› ์„ ๋•Œ์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ตœ๊ทผ ์ œ๊ฐ€ ๋‹ค๋‹ˆ๊ณ  ์žˆ๋Š” ํšŒ์‚ฌ์—์„œ ์ด๋ฒคํŠธ ์†Œ์‹ฑ๊ณผ CQRS๋ผ๋Š” ์ฃผ์ œ๋กœ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์—ˆ๋Š”๋ฐ์š”. ๋‹ค์‹œ๊ธˆ CQRS๋ฅผ ๋ณด๋ ค๊ณ  ํ•˜๋‹ˆ, ๊ทธ ๊ฐœ๋…์ด ์ž˜ ๊ธฐ์–ต๋‚˜์ง€ ์•Š๊ณ , ์–ด๋–ค ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Š”์ง€๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์„œ ์ด๋ ‡๊ฒŒ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ MSA์˜ ํŠธ๋žœ์žญ์…˜ ์ด์•ผ๊ธฐ 3๋ฒˆ์งธ ์ด๋ฒคํŠธ ์†Œ์‹ฑ๊ณผ CQRS ์‹œ์ž‘ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ CRUD ๊ฐ€๋”์€ ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ค ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ CRUD๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํŠธ๋žœ์žญ์…˜ ๋กœ์ง..

2021. 3. 14. 16:53

[FastAPI] 8. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์—์„œ SQLAlchemy์˜ scoped_session์ด ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ด์œ 

์•„๋ž˜์˜ ํฌ์ŠคํŠธ์—์„œ FastAPI๊ฐ€ SQLAlchemy์™€ ์—ฐ๋™ํ•˜์˜€์„ ๋•Œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ฏธํกํ•˜๋‹ค๋Š” ๋‹จ์ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์—ˆ๋˜ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 2020.12.27 - [Programming/Python] - [FastAPI] 2. SQLAlchemy๋ฅผ ์ด์šฉํ•œ ๊ฐ„๋‹จํ•œ CRUD API ๋งŒ๋“ค๊ธฐ [FastAPI] 2. SQLAlchemy๋ฅผ ์ด์šฉํ•œ ๊ฐ„๋‹จํ•œ CRUD API ๋งŒ๋“ค๊ธฐ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ORM์— ๋Œ€ํ•œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ORM์€ Object Relation Mapping์˜ ์•ฝ์ž๋กœ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Entity์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ blog.neonkid.xyz ์ด ๋ถ€๋ถ„์—์„œ ๋‹ค๋ฃฌ SQLAlchemy์˜ scoped_session์— ๋Œ€ํ•ด ์ข€ ๋” ..

2021. 3. 6. 19:22

[RxJava] 5. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 3ํŽธ (์ˆ˜ํ•™ ์—ฐ์‚ฐ์ž ๋ฐ ๊ธฐํƒ€ ์—ฐ์‚ฐ์ž)

2021/02/21 - [Programming/Java] - [RxJava] 4. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 2ํŽธ (๊ฒฐํ•ฉ, ์กฐ๊ฑด ์—ฐ์‚ฐ์ž) [RxJava] 4. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 2ํŽธ (๊ฒฐํ•ฉ, ์กฐ๊ฑด ์—ฐ์‚ฐ์ž) 2021/02/07 - [Programming/Java] - [RxJava] 3. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 1ํŽธ (์ƒ์„ฑ, ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž) [RxJava] 3. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 1ํŽธ (์ƒ์„ฑ, ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž) 2021/01/23 - [Programming/Java] - [RxJ.. blog.neonkid.xyz ์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด์„œ RxJava์˜ ๊ธฐ๋ณธ์„ ๋‹ค๋ฃจ๋Š” ์—ฐ์‚ฐ์ž ๋งˆ์ง€๋ง‰ ํŽธ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์ž ๋ฐ ๊ธฐํƒ€ ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ ๋‹ค๋ฃฐ ์ˆ˜ํ•™ ์—ฐ์‚ฐ..

2021. 2. 27. 16:39

[FastAPI] 7. Google-auth ๋ฐ PyJWT๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 2

์ง€๋‚œ ๊ธ€์— ์ด์–ด์„œ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” OAuth2 ์ธ์ฆ ํ† ํฐ์„ API์—์„œ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. HTTP Header ์šฐ๋ฆฌ๊ฐ€ REST API๋ฅผ ํ†ต์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” HTTP ํ”„๋กœํ† ์ฝœ์€ Header์™€ Body๋ผ๋Š” ๊ตฌ์กฐ๋กœ ์ด๋ค„์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Header์™€ Body ๋ชจ๋‘ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ Header์—๋Š” ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋ฒ„ ํ˜น์€ ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด ๋‚ด์ง€ ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š” ๋Œ€์ƒ์— ๋ถ€๊ฐ€์ ์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค„ ๋–„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‰ฌ์šด ์˜ˆ์‹œ๋กœ ์œ„์™€ ๊ฐ™์ด ๋กœ์ปฌ ์„œ๋ฒ„์—๊ฒŒ GET ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ˜ธ์ถœ์„ ์ „๋‹ฌํ–ˆ์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ๋Œ€์ƒ์ž์—๊ฒŒ ๋ถ€๊ฐ€์ ์ธ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก Key-value ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘์—์„œ ๊ฐ€..

2021. 2. 21. 18:20

[RxJava] 4. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 2ํŽธ (๊ฒฐํ•ฉ, ์กฐ๊ฑด ์—ฐ์‚ฐ์ž)

2021/02/07 - [Programming/Java] - [RxJava] 3. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 1ํŽธ (์ƒ์„ฑ, ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž) [RxJava] 3. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 1ํŽธ (์ƒ์„ฑ, ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž) 2021/01/23 - [Programming/Java] - [RxJava] 2. Reactive ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž(Operator) - map, filter, reduce [RxJava] 2. Reactive ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž(Operator) - map, filter, reduce Reactive Programming์—์„œ ๊ฝƒ์ด๋ผ๊ณ .. blog.neonkid.xyz ์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” ์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด ๊ฒฐํ•ฉ, ์กฐ๊ฑด ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒฐํ•ฉ ์—ฐ์‚ฐ์ž ๊ฒฐํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Obser..