Pretty-print HTTP requests and responses with syntax highlighting support.
- 🎨 Syntax highlighting for HTTP headers and JSON bodies
- 🔍 Automatic JSON body formatting
- 📝 Support for both Request and Response objects
- 🎯 Type-safe with TypeScript
- 🪶 Zero dependencies (except for optional syntax highlighting)
npm install @suin/print-http
yarn add @suin/print-http
pnpm add @suin/print-http
bun add @suin/print-http
import { printHttp } from '@suin/print-http';
const request = new Request('https://api.example.com/users', {
method: 'POST',
headers: {
'content-type': 'application/json',
'authorization': 'Bearer token123'
},
body: JSON.stringify({
name: 'John Doe',
email: 'john@example.com'
})
});
const output = await printHttp(request);
console.log(output);
Output:
POST /users HTTP/1.1
authorization: Bearer token123
content-type: application/json
host: api.example.com
{
"name": "John Doe",
"email": "john@example.com"
}
import { printHttp } from '@suin/print-http';
const response = new Response(
JSON.stringify({ message: 'Success' }),
{
status: 200,
headers: {
'content-type': 'application/json'
}
}
);
const output = await printHttp(response);
console.log(output);
Output:
HTTP/1.1 200 OK
content-type: application/json
{
"message": "Success"
}
Formats an HTTP request or response object into a string representation.
object
:Request | Response
- The HTTP request or response object to formatoptions?
:Object
(optional)color?
:boolean
- Enable/disable syntax highlighting (default:true
)highlighter?
:Highlighter
- Custom syntax highlighter implementation
Promise<string>
- The formatted HTTP message
interface Highlighter {
highlight(lang: string, value: string): Promise<string>;
}
- Node.js >= 22.0.0
MIT License - see the LICENSE file for details.