programing

우체국에서 일했는데도 400 오류, 생각할 수 있는 이유?

goodsources 2022. 8. 1. 22:47
반응형

우체국에서 일했는데도 400 오류, 생각할 수 있는 이유?

저는 Deepl API를 사용하고 있으며, Postman에서 요청을 실행하면 성공하지만, 앱에서 요청을 실행하면 400 Error만 반환됩니다.이것은 헤더가 올바르게 설정되어 있지 않다는 것을 의미하지만, Postman에서는 그대로입니다.여기서 무엇이 문제인지 지적해 주실 수 있나요?

async translateMessage(data = {}) {
  const url = "https://api.deepl.com/v2/translate?auth_key=myAuthKey";
  const response = await fetch(url, {
    method: "POST",
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Accept': '*/*'
    },
    body: {
      text: JSON.stringify(this.text),
      target_lang: 'DE',
      source_lang: 'EN'
    }
  });
  return response.json();
},

매뉴얼로부터의 HTTP Post 요구 예시:

POST /v2/translate?auth_key=[yourAuthKey]> HTTP/1.0
Host: api.deepl.com
User-Agent: YourApp
Accept: */*
Content-Length: [length]
Content-Type: application/x-www-form-urlencoded

auth_key=[yourAuthKey]&text=Hello, world&source_lang=EN&target_lang=DE

bodyURL 인코딩된 메시지의 속성(을 사용하여)application/x-www-form-urlencodedcontent type)은 쿼리 파라미터의 문자열 또는 인스턴스 중 하나여야 합니다.

솔루션

  1. 키/값 쌍의 개체를 에 전달합니다.URLSearchParams컨스트럭터
  2. 덧붙이는 게 좋을 거야auth_key(필요한 쿼리 파라미터의 1개)를 지정하여 URL에서 삭제합니다.
  3. 제거한다.JSON.stringify()에서text불필요한 따옴표를 번역에 삽입할 수 있습니다.
const url = 'https://api.deepl.com/v2/translate';
const response = await fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': '*/*'
  },            1️⃣
  body: new URLSearchParams({
    auth_key: myAuthKey, 2️⃣
    text: this.text, 3️⃣
    target_lang: 'DE',
    source_lang: 'EN'
  })
});

언급URL : https://stackoverflow.com/questions/69931424/400-error-despite-working-in-postman-possible-reasons

반응형