Skip to main content
SonamuλŠ” Context에 μ ‘κ·Όν•  수 μžˆλŠ” μ—¬λŸ¬ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 이 λ©”μ„œλ“œλ“€μ€ API λ©”μ„œλ“œ μ™ΈλΆ€μ—μ„œ Contextκ°€ ν•„μš”ν•œ κ²½μš°μ— μœ μš©ν•©λ‹ˆλ‹€.

Sonamu.getContext()

ν˜„μž¬ μ‹€ν–‰ 쀑인 μš”μ²­μ˜ Contextλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. AsyncLocalStorageλ₯Ό 톡해 κ΄€λ¦¬λ˜λ―€λ‘œ, 같은 μš”μ²­ μŠ€νƒ λ‚΄ μ–΄λ””μ„œλ“  ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹œκ·Έλ‹ˆμ²˜

λ°˜ν™˜κ°’

  • Context: ν˜„μž¬ μš”μ²­μ˜ Context 객체
  • ν…ŒμŠ€νŠΈ ν™˜κ²½: 빈 Context 객체 (request와 replyλŠ” null)

μ˜ˆμ™Έ

  • Error: Contextλ₯Ό 찾을 수 μ—†λŠ” 경우 (ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œλ§Œ)

μ‚¬μš© μ˜ˆμ‹œ

헬퍼 ν•¨μˆ˜μ—μ„œ μ‚¬μš©

μ„œλΉ„μŠ€ λ ˆμ΄μ–΄μ—μ„œ μ‚¬μš©

ν…ŒμŠ€νŠΈ ν™˜κ²½ λ™μž‘

ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œλŠ” Contextκ°€ μ£Όμž…λ˜μ§€ μ•Šμ•„λ„ μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•Šκ³  빈 Contextλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€:
μ‹€μ œ Contextκ°€ ν•„μš”ν•œ ν…ŒμŠ€νŠΈμ—μ„œλŠ” runWithMockContextλ₯Ό, μ‚¬μš©μž μ •λ³΄κΉŒμ§€ μ§€μ •ν•˜λ €λ©΄ testAsλ₯Ό μ‚¬μš©ν•˜μ„Έμš”:

파일 μ—…λ‘œλ“œ μ»¨ν…μŠ€νŠΈ

파일 μ—…λ‘œλ“œ μš”μ²­μ—μ„œ μ—…λ‘œλ“œλœ 파일 μ •λ³΄λŠ” Sonamu.getContext()λ₯Ό 톡해 μ ‘κ·Όν•©λ‹ˆλ‹€. @upload λ°μ½”λ ˆμ΄ν„°κ°€ 적용된 λ©”μ„œλ“œμ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ—…λ‘œλ“œ λͺ¨λ“œμ— 따라 두 κ°€μ§€ 속성을 μ‚¬μš©ν•©λ‹ˆλ‹€:
  • Buffer λͺ¨λ“œ (κΈ°λ³Έ): bufferedFiles - λ©”λͺ¨λ¦¬μ— λ‘œλ“œλœ 파일, MD5 계산/이미지 μ²˜λ¦¬μ— 적합
  • Stream λͺ¨λ“œ: uploadedFiles - μ €μž₯μ†Œλ‘œ 직접 슀트리밍된 파일, λŒ€μš©λŸ‰ νŒŒμΌμ— 적합

μ‹œκ·Έλ‹ˆμ²˜

νƒ€μž…

μ£Όμ˜μ‚¬ν•­

  • 파일 속성은 @upload λ°μ½”λ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•œ κ²½μš°μ—λ§Œ μ„€μ •λ©λ‹ˆλ‹€
  • Buffer λͺ¨λ“œ(κΈ°λ³Έ)μ—μ„œλŠ” bufferedFilesλ₯Ό, Stream λͺ¨λ“œμ—μ„œλŠ” uploadedFilesλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€
  • 단일 파일 μ—…λ‘œλ“œμ˜ 경우 bufferedFiles?.[0] λ˜λŠ” uploadedFiles?.[0]으둜 μ ‘κ·Όν•©λ‹ˆλ‹€

μ‚¬μš© μ˜ˆμ‹œ

단일 파일 μ—…λ‘œλ“œ (Buffer λͺ¨λ“œ)

닀쀑 파일 μ—…λ‘œλ“œ (Buffer λͺ¨λ“œ)

λŒ€μš©λŸ‰ 파일 μ—…λ‘œλ“œ (Stream λͺ¨λ“œ)

헬퍼 ν•¨μˆ˜μ—μ„œ μ‚¬μš©

κ΄€λ ¨ νƒ€μž…

BufferedFile (Buffer λͺ¨λ“œ)

UploadedFile (Stream λͺ¨λ“œ)

μ£Όμ˜μ‚¬ν•­

AsyncLocalStorage μŠ€νƒ

getContext()λŠ” AsyncLocalStorageλ₯Ό 톡해 λ™μž‘ν•˜λ―€λ‘œ, λ°˜λ“œμ‹œ 같은 비동기 μ‹€ν–‰ μŠ€νƒ λ‚΄μ—μ„œ ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€:

@upload λ°μ½”λ ˆμ΄ν„° ν•„μˆ˜

bufferedFiles/uploadedFiles 속성은 λ°˜λ“œμ‹œ @upload λ°μ½”λ ˆμ΄ν„°κ°€ 적용된 λ©”μ„œλ“œμ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

κ΄€λ ¨ λ¬Έμ„œ