Estoy usando la API de Deepl, y cuando ejecuto la solicitud en Postman es exitosa, sin embargo, al usarla en mi aplicación, solo devuelve un error 400, lo que supongo que significa que los encabezados no están configurados correctamente, pero así es como está en mi cartero. ¿Alguien puede señalar cuál puede ser el problema aquí?
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(); },Ejemplo de solicitud de publicación HTTP de la documentación:
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=DELa propiedad del body de un mensaje codificado en URL (con el tipo de contenido application/x-www-form-urlencoded ) debe ser una cadena de los parámetros de consulta o una instancia de URLSearchParams .
URLSearchParams .auth_key (uno de los parámetros de consulta requeridos) a eso y eliminarlo de la URL.JSON.stringify() de la propiedad de text , ya que eso insertaría comillas innecesarias en la traducción. 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' }) });