Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
H

httpsnippet

> 编程语言
Open source

HTTP Request snippet generator for many languages & libraries

1.2K stars0 likes1 views
WebsiteGitHub

About

HTTP Request snippet generator for many languages & libraries

HTTPSnippet

version License

HTTP Request snippet generator for many languages & tools including: cURL, HTTPie, JavaScript, Node, C, Java, PHP, Objective-C, Swift, Python, Ruby, C#, Go, OCaml, Crystal and more!

Relies on the popular HAR format to import data and describe HTTP calls.

See it in action on companion service: APIembed Downloads

  • HTTPSnippet
    • Quickstart
      • Core Concepts
      • CLI Quickstart
      • TypeScript Library Quickstart
    • CLI Usage
      • CLI Installation
      • Example
    • TypeScript Library Usage
      • Library Installation
      • Types
        • HarRequest
        • HarEntry
        • TargetId
        • ClientId
        • Converter
        • Client
        • ClientInfo
        • Extension
        • TargetInfo
        • Target
      • Library Exports
        • new HTTPSnippet(source: HarRequest | HarEntry)
        • snippet.convert(targetId: string, clientId?: string, options?: T)
        • isTarget
        • addTarget
        • isClient
        • addTargetClient
    • Bugs and feature requests
    • Contributing

Quickstart

Core Concepts

  1. HTTPSnippet's input is a JSON object that represents an HTTP request in the HAR Request Object format.
  2. HTTPSnippet's output is executable code that sends the input HTTP request, in a wide variety of languages and libraries.
  3. You provide HTTPSnippet your desired target, client, and options.
    • a target refers to a group of code generators. Generally, a target is a programming language like Rust, Go, C, or OCaml.
    • client refers to a more specific generator within the parent target. For example, the C# target has two available clients, httpclient and restsharp, each referring to a popular C# library for making requests.
    • options are per client and generally control things like specific indent behaviors or other formatting rules.

CLI Quickstart

bash
httpsnippet har.json \ # the path your input file (must be in HAR format)
  --target shell \ # your desired language
  --client curl \ # your desired language library
  --output ./examples \ # an output directory, otherwise will just output to Stdout
  --options '{ "indent": false }' # any client options as a JSON string

TypeScript Library Quickstart

typescript
import { HTTPSnippet } from 'httpsnippet';

const snippet = new HTTPSnippet({
  method: 'GET',
  url: 'http://mockbin.com/request',
});

const options = { indent: '\t' };
const output = snippet.convert('shell', 'curl', options);
console.log(output);

CLI Usage

CLI Installation

NPM Yarn
npm install --global httpsnippet yarn global add httpsnippet
httpsnippet [harFilePath]

the default command

Options:
      --help     Show help                                   [boolean]
      --version  Show version number                         [boolean]
  -t, --target   target output                     [string] [required]
  -c, --client   language client                              [string]
  -o, --output   write output to directory                    [string]
  -x, --options  provide extra options for the target/client  [string]

Examples:
  httpsnippet my_har.json --target rust --client actix --output my_src_directory

Example

The input to HTTPSnippet is any valid HAR Request Object, or full HAR log format.

example.json

…
bash
httpsnippet example.json --target shell --client curl --output ./examples
bash
$ tree examples
examples/
└── example.sh

inside examples/example.sh you'll see the generated output:

bash
curl --request POST \
  --url 'http://mockbin.com/har?foo=bar&foo=baz&baz=abc&key=value' \
  --header 'accept: application/json' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --cookie 'foo=bar; bar=baz' \
  --data foo=bar

provide extra options:

bash
httpsnippet example.json --target shell --client curl --output ./examples --options '{ "indent": false }'

and see how the output changes, in this case without indentation

bash
curl --request POST --url 'http://mockbin.com/har?foo=bar&foo=baz&baz=abc&key=value' --header 'accept: application/json' --header 'content-type: application/x-www-form-urlencoded' --cookie 'foo=bar; bar=baz' --data foo=bar

TypeScript Library Usage

Library Installation

NPM Yarn
npm install --save httpsnippet yarn add httpsnippet

Types

HarRequest

See for the TypeScript type corresponding to this type

HarEntry

typescript
interface Entry {
  request: Partial;
}

interface HarEntry {
  log: {
    version: string;
    creator: {
      name: string;
      version: string;
    };
    entries: {
      request: Partial;
    }[];
  };
}

TargetId

typescript
type TargetId = string;

ClientId

typescript
type ClientId = string;

Converter

typescript
type Converter> = (
  request: Request,
  options?: Merge,
) => string;

Client

typescript
interface Client = Record> {
  info: ClientInfo;
  convert: Converter;
}

ClientInfo

typescript
interface ClientInfo {
  key: ClientId;
  title: string;
  link: string;
  description: string;
}

Extension

typescript
type Extension = `.${string}` | null;

TargetInfo

typescript
interface TargetInfo {
  key: TargetId;
  title: string;
  extname: Extension;
  default: string;
}

Target

typescript
interface Target {
  info: TargetInfo;
  clientsById: Record;
}

Library Exports

new HTTPSnippet(source: HarRequest | HarEntry)

Name of conversion target

typescript
import { HTTPSnippet } from 'httpsnippet';

const snippet = new HTTPSnippet({
  method: 'GET',
  url: 'http://mockbin.com/request',
});

snippet.convert(targetId: string, clientId?: string, options?: T)

The convert method requires a target ID such as node, shell, go, etc. If no client ID is provided, the default client for that target will be used.

Note: to see the default targets for a given client, see target.info.default. For example shell's target has the default of curl.

Many targets provide specific options. Look at the TypeScript types for the target you are interested in to see what options it provides. For example shell:curl's options correspond to the CurlOptions interface in the shell:curl client file.

typescript
import { HTTPSnippet } from 'httpsnippet';

const snippet = new HTTPSnippet({
  method: 'GET',
  url: 'http://mockbin.com/request',
});

// generate Node.js: Native output
console.log(snippet.convert('node'));

// generate Node.js: Native output, indent with tabs
console.log(
  snippet.convert('node', {
    indent: '\t',
  }),
);

isTarget

Useful for validating that a custom target is considered valid by HTTPSnippet.

typescript
const isTarget: (target: Target) => target is Target;
typescript
import { myCustomTarget } from './my-custom-target';
import { isTarget } from 'httpsnippet';

try {
  console.log(isTarget(myCustomTarget));
} catch (error) {
  console.error(error);
}

addTarget

Use addTarget to add a new custom target that you can then use in your project.

typescript
const addTarget: (target: Target) => void;
typescript
import { myCustomClient } from './my-custom-client';
import { HAR } from 'my-custom-har';
import { HTTPSnippet, addTargetClient } from 'httpsnippet';

addTargetClient(myCustomClient);

const snippet = new HTTPSnippet(HAR);
const output = snippet.convert('customTargetId');
console.log(output);

isClient

Useful for validating that a custom client is considered valid by HTTPSnippet.

typescript
const isClient: (client: Client) => client is Client;
typescript
import { myCustomClient } from './my-custom-client';
import { isClient } from 'httpsnippet';

try {
  console.log(isClient(myCustomClient));
} catch (error) {
  console.error(error);
}

addTargetClient

Use addTargetClient to add a custom client to an existing target. See addTarget for how to add a custom target.

typescript
const addTargetClient: (targetId: TargetId, client: Client) => void;
typescript
import { myCustomClient } from './my-custom-client';
import { HAR } from 'my-custom-har';
import { HTTPSnippet, addTargetClient } from 'httpsnippet';

addTargetClient('customTargetId', myCustomClient);

const snippet = new HTTPSnippet(HAR);
const output = snippet.convert('customTargetId', 'customClientId');
console.log(output);

Bugs and feature requests

Have a bug or a feature request? Please first read the issue guidelines and search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.

Contributing

Please read through our contributing guidelines. Included are directions for opening issues, coding standards, and notes on development.

For info on creating new conversion targets, please review this guideline

Moreover, if your pull request contains TypeScript patches or features, you must include relevant unit tests.

Editor preferences are available in the editor config for easy use in common text editors. Read more and download plugins at .

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

TypeScripthacktoberfest

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言