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
- Host: GitHub
- URL: https://github.com/suin/print-http
- Owner: suin
- License: mit
- Created: 2025-01-28T00:34:04.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-28T00:40:50.000Z (about 1 year ago)
- Last Synced: 2025-09-21T20:21:38.509Z (7 months ago)
- Topics: developer-tools, formatting, http, nodejs, pretty-print, request-response, syntax-highlighting, typescript
- Language: TypeScript
- Size: 24.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# @suin/print-http
[](https://www.npmjs.com/package/@suin/print-http)
[](https://opensource.org/licenses/MIT)
[](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.