'use strict' const { request } = require('../../') async function getRequest (port = 3001) { // A simple GET request const { statusCode, headers, body } = await request(`http://localhost:${port}/`) const data = await body.text() console.log('response received', statusCode) console.log('headers', headers) console.log('data', data) } async function postJSONRequest (port = 3001) { // Make a JSON POST request: const requestBody = { hello: 'JSON POST Example body' } const { statusCode, headers, body } = await request( `http://localhost:${port}/json`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(requestBody) } ) // .json() will fail if we did not receive a valid json body in response: const decodedJson = await body.json() console.log('response received', statusCode) console.log('headers', headers) console.log('data', decodedJson) } async function postFormRequest (port = 3001) { // Make a URL-encoded form POST request: const qs = require('node:querystring') const requestBody = { hello: 'URL Encoded Example body' } const { statusCode, headers, body } = await request( `http://localhost:${port}/form`, { method: 'POST', headers: { 'content-type': 'application/x-www-form-urlencoded' }, body: qs.stringify(requestBody) } ) const data = await body.text() console.log('response received', statusCode) console.log('headers', headers) console.log('data', data) } async function deleteRequest (port = 3001) { // Make a DELETE request const { statusCode, headers, body } = await request( `http://localhost:${port}/something`, { method: 'DELETE' } ) console.log('response received', statusCode) console.log('headers', headers) // For a DELETE request we expect a 204 response with no body if successful, in which case getting the body content with .json() will fail if (statusCode === 204) { console.log('delete successful') // always consume the body if there is one: await body.dump() } else { const data = await body.text() console.log('received unexpected data', data) } } module.exports = { getRequest, postJSONRequest, postFormRequest, deleteRequest }