Estoy refactorizando un código y necesito cambiar de fetch a axios. Tengo el siguiente código:
const createAttachment = async (formData: FormData): Promise<boolean | string> => { try { const response = await fetch(API_URL, { method: 'POST', body: formData }); const resultText = await response.text(); if (response?.ok) { return resultText; } // sending fails captureMessage( `Kontaktní formulář selhal při nahrávání přílohy: ${JSON.stringify(resultText)}`, ); return false; } catch (error) { captureMessage(`Kontaktní formulář selhal při nahrávání přílohy: ${error}`); return false; } };simplemente no puedo resolver cómo obtener respuesta. texto () en axios?
Así es como estoy usando axios:
const api = axios.create({baseURL: env.STRAPI_URL}) const createAttachment = async (formData: FormData): Promise<boolean | string> => { try { const response = await api.post(DAKTELA_FILE_API, formData); const resultText = await response.data if (response.statusText === "OK" && response.status === 200) { return resultText; } // fail to send captureMessage( `Kontaktní formulář selhal při nahrávání přílohy: ${JSON.stringify(resultText)}`, ); return false; } catch (error) { captureMessage(`Kontaktní formulář selhal při nahrávání přílohy: ${error}`); return false; } };Para hacer el tipo de respuesta de axios con text , solo necesita pasar responseType: 'text' y transformResponse: undefined al objeto de opciones.
const createAttachment = async (formData: FormData): Promise<boolean | string> => { try { const resultText = await axios(API_URL, { method: 'POST', body: formData, responseType: 'text', transformResponse: undefined }); return resultText; } catch (error) { captureMessage(`Kontaktní formulář selhal při nahrávání přílohy: ${error}`); return false; } };Los datos de respuesta estarán en el campo 'datos' de la respuesta resuelta https://github.com/axios/axios#response-schema
Puede publicar formData usando Axios de esta manera, sin la espera adicional para extraer el texto.
const response = await axios.post(API_URL, formData); const resultText = response.data;