Javascript

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

마샤와 곰 2023. 9. 8. 12:13

 

웹 프론트에서 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오류 해결 방법 이였습니다.

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

반응형