μ‹œνλ¦¬ν‹°μ§€ν˜Έ 2024. 1. 24. 08:11

λ¦¬ν€˜μŠ€νŠΈμ™€ λ¦¬μŠ€ν°μŠ€λŠ” ν—€λ“œμ™€ λ°”λ””λ‘œ λ˜μ–΄μžˆλ‹€. 

 

ν—€λ“œμ—λŠ” μ—¬λŸ¬κ°€μ§€ μžˆλŠ”λ° κ·Έ 쀑 Content-Type 은 뭘까?

 

 

Content-Type 헀더

 

ν˜„μž¬ λ¦¬ν€˜μŠ€νŠΈ λ˜λŠ” 리슀폰슀의 바디에 λ“€μ–΄ μžˆλŠ” 데이터가 μ–΄λ–€ νƒ€μž…μΈμ§€λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

 

λ¦¬ν€˜μŠ€νŠΈ λ˜λŠ” 리슀폰슀의 λ°”λ””μ—λŠ” HTML, JavaScript 그리고 JSON 데이터 외에도 이미지 μ˜μƒκΉŒμ§€ λ§Žμ€ 것듀이 μžˆλ‹€.

 

λ°”λ‘œ μ΄λŸ¬ν•œ λ°μ΄ν„°λ“€μ˜ νƒ€μž… 정보가 'Content - Type' ν—€λ”에 담겨 μžˆλ‹€. 이 'Content - Type ν—€λ”λŠ” 'μ£Ό νƒ€μž…(main type) / μ„œλΈŒ νƒ€μž…(sub type) ' ν˜•μ‹μœΌλ‘œ λ˜μ–΄μžˆλ”°.

 

μ£Ό νƒ€μž…μ˜ μ’…λ₯˜

1. μ£Ό νƒ€μž…μ΄ text인 경우(ν…μŠ€νŠΈ) 

  • 일반 ν…μŠ€νŠΈ : text/plain
  • CSS μ½”λ“œ: text/css
  • HTML μ½”λ“œ: text/html
  • JavaScript μ½”λ“œ: text/javascript

2. μ£Ό νƒ€μž…μ΄ image인 경우(이미지)

  • bmp이미지: image/bmp
  • gif이미지: image/gif
  • png이미지: image/png

3. μ£Ό νƒ€μž…μ΄ audio인 경우(μ˜€λ””μ˜€)

  • mp4 μ˜€λ””μ˜€: audio/mp4
  • ogg μ˜€λ””μ˜€: audo/ogg

4. μ£Ό νƒ€μž…μ΄ video인 경우(λΉ„λ””μ˜€)

  • mp4 λΉ„λ””μ˜€: video/mp4
  • H264 λΉ„λ””μ˜€: video/H264

5. μ£Ό νƒ€μž…μ΄ application인 경우

  • JSON 데이터: application/json
  • ν™•μΈλ˜μ§€ μ•Šμ€ λ°”μ΄λ„ˆλ¦¬ 파일: application/octet-stream

octet-stream : μ»΄ν“¨ν„°μ—μ„œλŠ” λͺ¨λ“  파일이 0κ³Ό 1의 μ‘°ν•©μœΌλ‘œ 이루어져 μžˆλ‹€. 근데 0κ³Ό 1의 쑰합이 μš°λ¦¬κ°€ 읽을 수 μžˆλŠ” ν…μŠ€νŠΈλ‘œ λ³€ν™˜μ΄ κ°€λŠ₯ν•œ κ²½μš°λ„ 있고, κ·Έλ ‡μ§€ μ•Šμ€ κ²½μš°λ„ μžˆλ‹€. 일반적으둜 μ΄λ ‡κ²Œ ν…μŠ€νŠΈ 파일 μ΄μ™Έμ˜ νŒŒμΌλ“€μ„ λ°”μ΄λ„ˆλ¦¬ 파일이라고 ν•œλ‹€.  이 μ€‘μ—μ„œλ„ ν™•μž₯μžκ°€ .png, .mp4 λ“±μ˜ νŠΉμ • ν™•μž₯자의 포맷에 ν•΄λ‹Ήλ˜μ§€ μ•ŠλŠ” 데이터듀을 보톡 application/octet-stream 이라고 ν•œλ‹€.

 

보톡 이 글이 λ“€μ–΄κ°€ 있으면 μ‚¬μš©μžμ—κ²Œ 'λ‹€μš΄λ‘œλ“œ λ°›μœΌμ‹œκ² μŠ΅λ‹ˆκΉŒ' 같은 alertκ°€ λœ¬λ‹€.

 

Content - Type 헀더가 ν•„μš”ν•œ 이유

 Content - Type 헀더가 μ‘΄μž¬ν•˜λ©΄, λ°”λ””μ˜ 데이터λ₯Ό 직접 ν™•μΈν•΄μ„œ κ·Έ νƒ€μž…μ„ μΆ”λ‘ ν•˜μ§€ μ•Šμ•„λ„ 되기 λ•Œλ¬Έμ΄λ‹€. 이둜써 λΆˆν•„μš”ν•œ λΉ„μš© λ°œμƒμ„ λ°©μ§€ν•  수 μžˆλ‹€.

 

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

객체 μ•ˆμ— headers 객체λ₯Ό μΆ”κ΅¬ν•œ λ’€ κ·Έμ•ˆμ—

'Content-Type':application/json' 을 λ„£μ–΄μ€€λ‹€.

const newMember = {
    name: 'jiho',
    email: 'jiholine@nver.com',
    department: "engineer2"
};

fetch('μš”μ²­λ³΄λ‚Ό url μ£Όμ†Œ',{
    method : 'POST',
    headers: {
        'Content-Type': 'application/json',
    },
    body : JSON.stringify(newMember)
})
.then((response) => response.text())
.then((result) => console.log(result));

 

참고자료:

https://www.iana.org/assignments/media-types/media-types.xhtml