/print-http

Pretty-print HTTP requests and responses with syntax highlighting support

Primary LanguageTypeScriptMIT LicenseMIT

@suin/print-http

npm version License: MIT Node.js Version

Pretty-print HTTP requests and responses with syntax highlighting support.

Features

  • 🎨 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)

Installation

npm install @suin/print-http
yarn add @suin/print-http
pnpm add @suin/print-http
bun add @suin/print-http

Usage

Print HTTP Request

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"
}

Print HTTP Response

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"
}

API

printHttp(object, options?): Promise<string>

Formats an HTTP request or response object into a string representation.

Parameters

  • object: Request | Response - The HTTP request or response object to format
  • options?: Object (optional)
    • color?: boolean - Enable/disable syntax highlighting (default: true)
    • highlighter?: Highlighter - Custom syntax highlighter implementation

Returns

  • Promise<string> - The formatted HTTP message

Highlighter Interface

interface Highlighter {
  highlight(lang: string, value: string): Promise<string>;
}

Requirements

  • Node.js >= 22.0.0

License

MIT License - see the LICENSE file for details.