Skip to main content
SonamuContext๋Š” API ์š”์ฒญ ์ฒ˜๋ฆฌ ์ค‘์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

Context ๊ฐœ์š”

Request ์ •๋ณด

HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ ํ—ค๋”, ๋ฐ”๋””, ์ฟผ๋ฆฌ

Reply ๊ฐ์ฒด

HTTP ์‘๋‹ต ์ œ์–ด ์ƒํƒœ ์ฝ”๋“œ, ํ—ค๋”

User ์ •๋ณด

์ธ์ฆ๋œ ์‚ฌ์šฉ์ž ID, ๊ถŒํ•œ, ์—ญํ• 

ํ™•์žฅ ๊ฐ€๋Šฅ

์ปค์Šคํ…€ ํ•„๋“œ ์ถ”๊ฐ€ ํ”„๋กœ์ ํŠธ๋ณ„ ๋ฐ์ดํ„ฐ

SonamuContext ๊ตฌ์กฐ

๊ธฐ๋ณธ ๊ตฌ์กฐ

Sonamu๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Fastify๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, request์™€ reply๋Š” Fastify์˜ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

Context ๊ตฌ์„ฑ ์š”์†Œ

1. Request

HTTP ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ฃผ์š” ์†์„ฑ:
  • headers: HTTP ํ—ค๋” (๊ฐ์ฒด)
  • query: URL ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ (๊ฐ์ฒด)
  • body: ์š”์ฒญ ๋ฐ”๋”” (POST/PUT ๋“ฑ)
  • params: URL ๊ฒฝ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ
  • ip: ํด๋ผ์ด์–ธํŠธ IP ์ฃผ์†Œ
  • hostname: ํ˜ธ์ŠคํŠธ๋ช…
  • url: ์š”์ฒญ URL
  • method: HTTP ๋ฉ”์„œ๋“œ

2. Reply

HTTP ์‘๋‹ต์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฃผ์š” ๋ฉ”์„œ๋“œ:
  • status(code): ์ƒํƒœ ์ฝ”๋“œ ์„ค์ •
  • header(name, value): ์‘๋‹ต ํ—ค๋” ์„ค์ •
  • cookie(name, value, options): ์ฟ ํ‚ค ์„ค์ •
  • redirect(url): ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  • send(data): ์‘๋‹ต ์ „์†ก (์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋™)

3. User

์ธ์ฆ๋œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
context.user๋Š” ์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด์— ์˜ํ•ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์ด ํ•„์š”ํ•œ API์—์„œ๋Š” ํ•ญ์ƒ context.user์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ „ ์‚ฌ์šฉ ์˜ˆ์ œ

์ธ์ฆ ํ™•์ธ

๊ถŒํ•œ ํ™•์ธ

๋กœ๊น…

์ปค์Šคํ…€ ํ—ค๋”

์ฟ ํ‚ค ์ฒ˜๋ฆฌ

IP ๊ธฐ๋ฐ˜ ์ œํ•œ

Rate Limiting ์ •๋ณด

Context ์‚ฌ์šฉ ํŒจํ„ด

์ฃผ์˜์‚ฌํ•ญ

Context ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ: 1. API ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ 2. context.user๋Š” ์ธ์ฆ ํ›„์—๋งŒ ์กด์žฌ 3. ๋น„๋™๊ธฐ ์ž‘์—… ์ค‘์—๋„ ๋™์ผํ•œ Context ์œ ์ง€ 4. Context ์ˆ˜์ •์€ ์‹ ์ค‘ํ•˜๊ฒŒ 5. ์‘๋‹ต ํ—ค๋”๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์ „์— ์„ค์ •

ํ”ํ•œ ์‹ค์ˆ˜

๋‹ค์Œ ๋‹จ๊ณ„

Context ๊ฐ€์ ธ์˜ค๊ธฐ

Sonamu.getContext() ์‚ฌ์šฉ๋ฒ•

์ปค์Šคํ…€ Context

Context ํ™•์žฅํ•˜๊ธฐ

@api ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ

API ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

์—๋Ÿฌ ์ฒ˜๋ฆฌ

API ์—๋Ÿฌ ํ•ธ๋“ค๋ง