본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Javascript

데이터 전송, 415 오류 (415 Unsupported Media Type)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2023. 9. 8.

 

웹 프론트에서 form 데이터 형식을 통해 서버와 응답하는 경우 만날 수 있는 오류 입니다.

form 데이터에서 특정 데이터의 타입을 application/json으로 지정하지 않으면 발생 할 수 있습니다.

기본적인 form 데이터를 통해 데이터를 전송하는 방법 입니다.

const formData = new FormData()
formData.append('키', '값')
formData.append('파일데이터키', file)

const header = {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    transformRequest: [
      function () {
        return formData
      }
    ]
}

axios.post('주소', formData, type).catch((e) => e)

 

이러한 방식으로 form 데이터를 서버로 전송하곤 하는데...

서버에서 특정 필드값을 "application/json" 값으로 받고 싶어 한 다면 이렇게 보내면 415 오류를 만나게 됩니다.

 

이를 해결하기위해 2가지 방법을 추가해야 합니다.

const formData = new FormData()
formData.append('키', '값')
formData.append('파일데이터키', file)

//#1. 타입을 추가하여 줍니다.
const jsonDataTypeValue = new Blob([JSON.stringify('json형식으로받고싶어하는값')], {
    type: 'application/json'
})
formData.append('json으로받고싶어하는값의 키', jsonDataTypeValue)


const header = {
    headers: {
      'Content-Type': 'multipart/form-data',
      accept: 'application/json'  //#2. 수신헤더 값에 accept를 추가하여야 합니다
    },
    transformRequest: [
      function () {
        return formData
      }
    ]
}

axios.post('주소', formData, type).catch((e) => e)

 

이렇게 전송한 값의 페이로드를 살펴보면 확연히 다른 모습을 볼 수 있습니다.

 

1번 같은 경우는 데이터를 단순하게 보내는 경우의 모습 입니다.

2번을 살펴보면 Content-Type 이라는 부분에 "application/json" 이 추가된 것을 볼 수 있습니다.

 

간단하게 살펴본 415오류 해결 방법 이였습니다.

궁금한점 또는 틀린부분은 언제든 연락주세요!  😁

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글