arrow-left

All pages
gitbookPowered by GitBook
1 of 22

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

HTTP

Context Factory

Application

API Server

hashtag
Request Lifecycle

hashtag
1. Extension

Server Extension์€ ์›น ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑ ๋ฐ ํ™•์žฅํ•˜๋Š”๋ฐ ์“ฐ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ƒ์„ฑ ์˜ต์…˜์„ ํ†ตํ•ด ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP

HTTP Extension์€ HTTP ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋„๋ก ์›น ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

HTTP/2

HTTP/2 Extension์€ HTTP/2 ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋„๋ก ์›น ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

TLS

TLS Extension์€ HTTPS ์š”์ฒญ์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์›น ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

hashtag
2. Middleware

์—”๋“œํฌ์ธํŠธ๋กœ์˜ ๋ผ์šฐํŒ… ์ „/ํ›„์— ๋ฏธ๋“ค์›จ์–ด๋“ค์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ƒ์„ฑ ์˜ต์…˜์„ ํ†ตํ•ด ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

hashtag
A. Before Middleware

์—”๋“œํฌ์ธํŠธ๋กœ์˜ ๋ผ์šฐํŒ… ์ „์— ์ˆ˜ํ–‰๋˜๋Š” ๋ฏธ๋“ค์›จ์–ด์ž…๋‹ˆ๋‹ค.

Static

Static Middleware๋Š” ์ตœ์ดˆ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๋ฏธ๋“ค์›จ์–ด์ž…๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”์‹œ API Gateway ์„œ๋น„์Šค ๋…ธ๋“œ์˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์• ์…‹ ํŒŒ์ผ๋“ค์„ ์„œ๋น™ํ•ฉ๋‹ˆ๋‹ค.

Body Parser

Body Parser๋Š” application/json, application/x-www-form-url-encoded, multipart/form-data Content Type ์š”์ฒญ์˜ ๋ฐ”๋””๋ฅผ JavaScript ๊ฐ์ฒด๋กœ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

Cookie Parser

Cookie Parser๋Š” Cookie ํ—ค๋”๋ฅผ JavaScript ๊ฐ์ฒด๋กœ ํ•ด์„ํ•˜๊ณ  ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

CORS

CORS ๋ฏธ๋“ค์›จ์–ด๋Š” ๊ต์ฐจ ์ถœ์ฒ˜ ์ž์› ๊ณต์œ ์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด ์ •์ฑ…์— ๋”ฐ๋ผ Preflight ์š”์ฒญ์— ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

Helmet

Helmet ๋ฏธ๋“ค์›จ์–ด๋Š” ์„œ๋ฒ„์— CSP, HSTS ๋“ฑ ๊ธฐ์ดˆ์ ์ธ ๋ณด์•ˆ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

hashtag
B. Context Factory

์—”๋“œํฌ์ธํŠธ๋กœ์˜ ๋ผ์šฐํŒ… ์ง์ „์— Context Factory ๋ฏธ๋“ค์›จ์–ด๋ฅผ ํ†ตํ•ด ์š”์ฒญ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Context๋Š” API Handler์— ์ „๋‹ฌ๋˜๋Š” ์ธ์ฆ, Locale, Language, TimeZone ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

Locale

Locale ์ปจํ…์ŠคํŠธ๋Š” ์š”์ฒญ ํ—ค๋”๋กœ๋ถ€ํ„ฐ Locale, Language, TimeZone ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

Auth

์ธ์ฆ ์ปจํ…์ŠคํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์š”์ฒญ์œผ๋กœ๋ถ€ํ„ฐ ์„œ๋ฒ„ ์ƒ์„ฑ ์˜ต์…˜์„ ํ†ตํ•ด ์ธ์ฆ ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Bearer ํ† ํฐ์„ ํ”ผ์–ด ๋ชจ๋“ˆ์„ ํ†ตํ•ด ํ†ตํ•ด ํŒŒ์‹ฑํ•ด idToken์„ ํš๋“ํ•˜๊ฑฐ๋‚˜, ๋ณ„๋„์˜ ์ธ์ฆ ์„œ๋ฒ„์— ์ „๋‹ฌํ•ด ์›ํ•˜๋Š” ๋ฐฉ์‹๋Œ€๋กœ ํ•ด์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

hashtag
C. After Middleware

์—”๋“œํฌ์ธํŠธ๋กœ์—์„œ์˜ ์‘๋‹ต ํ›„์— ์ˆ˜ํ–‰๋˜๋Š” ๋ฏธ๋“ค์›จ์–ด์ž…๋‹ˆ๋‹ค.

Error

Error ๋ฏธ๋“ค์›จ์–ด๋Š” ๋ถ„์‚ฐ ์„œ๋น„์Šค์˜ ์—๋Ÿฌ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  HTTP ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์„ค์ •ํ•˜๋ฉฐ ํ‘œ์ค€ํ™”๋œ ์—๋Ÿฌ ํฌ๋งท์˜ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ETag

ETag ๋ฏธ๋“ค์›จ์–ด๋Š” GET, HEAD ์š”์ฒญ ๋ฐ ์‘๋‹ต(200 OK)์—์„œ If-None-Match ๋ฐ ETag ํ—ค๋”๋ฅผ ํ™œ์šฉํ•ด API ํด๋ผ์ด์–ธํŠธ์˜ ์„ฑ๋Šฅ์„ ๋†’ํž™๋‹ˆ๋‹ค.

Header

Header ๋ฏธ๋“ค์›จ์–ด๋Š” Header Context์— ๊ฐ’์ด ํ• ๋‹น๋œ ๊ฒฝ์šฐ ์‘๋‹ต ํ—ค๋”๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

hashtag
3. API Handler

์š”์ฒญ์ด ์ „์ฒ˜๋ฆฌ ๋ฏธ๋“ค์›จ์–ด, ์ปจํ…์ŠคํŠธ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ํ†ต๊ณผ ํ•œ ํ›„์— ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์—”๋“œํฌ์ธํŠธ๋กœ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค. API ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ†ต๊ณผ ํ•œ ํ›„ ํ›„์ฒ˜๋ฆฌ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ง€๋‚˜ ์š”์ฒญ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

hashtag
A. Dynamic Handler

๋™์  ํ•ธ๋“ค๋Ÿฌ๋Š” Gateway์— ์ƒ์„ฑ๋œ ๋ธŒ๋žœ์น˜์— ๋”ฐ๋ผ ์š”์ฒญ์„ ๋ธŒ๋žœ์น˜ ํ•ธ๋“ค๋Ÿฌ๋กœ ํ”„๋ก์‹œํ•ฉ๋‹ˆ๋‹ค.

hashtag
B. Branch Handler

๋ธŒ๋žœ์น˜ ํ•ธ๋“ค๋Ÿฌ๋Š” Gateway์— ์ƒ์„ฑ๋œ ํ•ด๋‹น ๋ธŒ๋žœ์น˜์˜ ํƒœ๊ทธ์— ๋”ฐ๋ผ ์š”์ฒญ์„ ๋ฒ„์ „ ํ•ธ๋“ค๋Ÿฌ๋กœ ํ”„๋ก์‹œํ•ฉ๋‹ˆ๋‹ค.

hashtag
C. Version Handler

๋ฒ„์ „ ํ•ธ๋“ค๋Ÿฌ๋Š” Gateway API ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ์ปค๋„ฅํ„ฐ ๋ฐ ํ”„๋กœํ† ์ฝœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์กฐํ•ฉํ•ด ์ƒ์„ฑํ•œ ํ•ธ๋“ค๋Ÿฌ๋กœ ์š”์ฒญ์„ ํ”„๋ก์‹œํ•ฉ๋‹ˆ๋‹ค.

moleculer-iamarrow-up-right

Component

WebSocket

Auth

Correlation ID

Request

Locale

Cookie

IP Address

User-Agent

Helmet

Middleware

Error

CORS

Body Parser

HTTPS

HTTP

http, https, http2 (WIP)

Serve Static

Logging