Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

HTTP Request snippet generator for many languages & libraries

License

NotificationsYou must be signed in to change notification settings

Kong/httpsnippet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

versionLicense

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

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

See it in action on companion service:APIembed

BuildDownloads

Quickstart

Core Concepts

  1. HTTPSnippet's input is a JSON object that represents an HTTP request in theHAR 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 desiredtarget,client, andoptions.
    • atarget refers to a group of code generators. Generally, a target is aprogramming language likeRust,Go,C, orOCaml.
    • client refers to a more specific generator within the parent target. For example, theC# target has two available clients,httpclient andrestsharp, 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

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

import{HTTPSnippet}from'httpsnippet';constsnippet=newHTTPSnippet({method:'GET',url:'http://mockbin.com/request',});constoptions={indent:'\t'};constoutput=snippet.convert('shell','curl',options);console.log(output);

CLI Usage

CLI Installation

NPMYarn
npm install --global httpsnippet
yarn global add httpsnippet
httpsnippet [harFilePath]the default commandOptions:      --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 validHAR Request Object, or fullHAR log format.

`example.json`
{"method":"POST","url":"http://mockbin.com/har?key=value","httpVersion":"HTTP/1.1","queryString": [    {"name":"foo","value":"bar"    },    {"name":"foo","value":"baz"    },    {"name":"baz","value":"abc"    }  ],"headers": [    {"name":"accept","value":"application/json"    },    {"name":"content-type","value":"application/x-www-form-urlencoded"    }  ],"cookies": [    {"name":"foo","value":"bar"    },    {"name":"bar","value":"baz"    }  ],"postData": {"mimeType":"application/x-www-form-urlencoded","params": [      {"name":"foo","value":"bar"      }    ]  }}
httpsnippet example.json --target shell --client curl --output ./examples
$tree examplesexamples/└── example.sh

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

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:

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

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

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

NPMYarn
npm install --save httpsnippet
yarn add httpsnippet

Types

HarRequest

Seehttps://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/har-format for the TypeScript type corresponding to this type

HarEntry

interfaceEntry{request:Partial<HarRequest>;}interfaceHarEntry{log:{version:string;creator:{name:string;version:string;};entries:{request:Partial<HarRequest>;}[];};}

TargetId

typeTargetId=string;

ClientId

typeClientId=string;

Converter

typeConverter<TextendsRecord<string,any>>=(request:Request,options?:Merge<CodeBuilderOptions,T>,)=>string;

Client

interfaceClient<TextendsRecord<string,any>=Record<string,any>>{info:ClientInfo;convert:Converter<T>;}

ClientInfo

interfaceClientInfo{key:ClientId;title:string;link:string;description:string;}

Extension

typeExtension= `.${string}`|null;

TargetInfo

interfaceTargetInfo{key:TargetId;title:string;extname:Extension;default:string;}

Target

interfaceTarget{info:TargetInfo;clientsById:Record<ClientId,Client>;}

Library Exports

new HTTPSnippet(source: HarRequest | HarEntry)

Name ofconversion target

import{HTTPSnippet}from'httpsnippet';constsnippet=newHTTPSnippet({method:'GET',url:'http://mockbin.com/request',});

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

Theconvert method requires a target ID such asnode,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, seetarget.info.default. For exampleshell's target has the default ofcurl.

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

import{HTTPSnippet}from'httpsnippet';constsnippet=newHTTPSnippet({method:'GET',url:'http://mockbin.com/request',});// generate Node.js: Native outputconsole.log(snippet.convert('node'));// generate Node.js: Native output, indent with tabsconsole.log(snippet.convert('node',{indent:'\t',}),);

isTarget

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

constisTarget:(target:Target)=>target isTarget;
import{myCustomTarget}from'./my-custom-target';import{isTarget}from'httpsnippet';try{console.log(isTarget(myCustomTarget));}catch(error){console.error(error);}

addTarget

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

constaddTarget:(target:Target)=>void;
import{myCustomClient}from'./my-custom-client';import{HAR}from'my-custom-har';import{HTTPSnippet,addTargetClient}from'httpsnippet';addTargetClient(myCustomClient);constsnippet=newHTTPSnippet(HAR);constoutput=snippet.convert('customTargetId');console.log(output);

isClient

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

constisClient:(client:Client)=>client isClient;
import{myCustomClient}from'./my-custom-client';import{isClient}from'httpsnippet';try{console.log(isClient(myCustomClient));}catch(error){console.error(error);}

addTargetClient

UseaddTargetClient to add a custom client to an existing target. SeeaddTarget for how to add a custom target.

constaddTargetClient:(targetId:TargetId,client:Client)=>void;
import{myCustomClient}from'./my-custom-client';import{HAR}from'my-custom-har';import{HTTPSnippet,addTargetClient}from'httpsnippet';addTargetClient('customTargetId',myCustomClient);constsnippet=newHTTPSnippet(HAR);constoutput=snippet.convert('customTargetId','customClientId');console.log(output);

Bugs and feature requests

Have a bug or a feature request? Please first read theissue 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 ourcontributing guidelines. Included are directions for opening issues, coding standards, and notes on development.

For info on creating new conversion targets, please review thisguideline

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

Editor preferences are available in theeditor config for easy use in common text editors. Read more and download plugins athttp://editorconfig.org.


[8]ページ先頭

©2009-2025 Movatter.jp