An open API service indexing awesome lists of open source software.

https://github.com/suin/print-http

Pretty-print HTTP requests and responses with syntax highlighting support
https://github.com/suin/print-http

developer-tools formatting http nodejs pretty-print request-response syntax-highlighting typescript

Last synced: about 2 months ago
JSON representation

Pretty-print HTTP requests and responses with syntax highlighting support

Awesome Lists containing this project

README

          

# @suin/print-http

[![npm version](https://img.shields.io/npm/v/@suin/print-http.svg)](https://www.npmjs.com/package/@suin/print-http)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Node.js Version](https://img.shields.io/node/v/@suin/print-http.svg)](https://nodejs.org/)

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

```bash
npm install @suin/print-http
```

```bash
yarn add @suin/print-http
```

```bash
pnpm add @suin/print-http
```

```bash
bun add @suin/print-http
```

## Usage

### Print HTTP Request

```typescript
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:
```http
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

```typescript
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
HTTP/1.1 200 OK
content-type: application/json

{
"message": "Success"
}
```

## API

### `printHttp(object, options?): Promise`

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` - The formatted HTTP message

### Highlighter Interface

```typescript
interface Highlighter {
highlight(lang: string, value: string): Promise;
}
```

## Requirements

- Node.js >= 22.0.0

## License

MIT License - see the [LICENSE](LICENSE) file for details.