Post JSON
Send a POST request with JSON data. Use to share data with external servers.
/** * Example someHost is set up to take in a JSON request * Replace url with the host you wish to send requests to * @param {string} url the URL to send the request to * @param {BodyInit} body the JSON data to send in the request */
const someHost = 'https://examples.cloudflareworkers.com/demos';
const url = someHost + '/requests/json';
const body = { results: ['default data to send'], errors: null, msg: 'I sent this to the fetch',
};
/** * gatherResponse awaits and returns a response body as a string. * Use await gatherResponse(..) in an async function to get the response body * @param {Response} response */
async function gatherResponse(response) { const { headers } = response; const contentType = headers.get('content-type') || ''; if (contentType.includes('application/json')) { return JSON.stringify(await response.json()); } else if (contentType.includes('application/text')) { return response.text(); } else if (contentType.includes('text/html')) { return response.text(); } else { return response.text(); }
}
async function handleRequest() { const init = { body: JSON.stringify(body), method: 'POST', headers: { 'content-type': 'application/json;charset=UTF-8', }, }; const response = await fetch(url, init); const results = await gatherResponse(response); return new Response(results, init);
}
addEventListener('fetch', event => { return event.respondWith(handleRequest());
});