• Stars
    star
    954
  • Rank 46,085 (Top 1.0 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 10 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unirest in Node.js: Simplified, lightweight HTTP client library.

Unirest for Node.js Build Status

License Downloads Gitter

Unirest is a set of lightweight HTTP libraries available in multiple languages, built and maintained by Kong, who also maintain the open-source API Gateway Kong.

Installing

To utilize unirest for node.js install the the npm module:

$ npm install unirest

After installing the npm package you can now start simplifying requests like so:

var unirest = require('unirest');

Creating Requests

You're probably wondering how by using Unirest makes creating requests easier. Besides automatically supporting gzip, and parsing responses, lets start with a basic working example:

unirest
  .post('http://mockbin.com/request')
  .headers({'Accept': 'application/json', 'Content-Type': 'application/json'})
  .send({ "parameter": 23, "foo": "bar" })
  .then((response) => {
    console.log(response.body)
  })

Uploading Files

Transferring file data has been simplified:

unirest
  .post('http://mockbin.com/request')
  .headers({'Content-Type': 'multipart/form-data'})
  .field('parameter', 'value') // Form field
  .attach('file', '/tmp/file') // Attachment
  .then(function (response) {
    console.log(response.body)
  })

Custom Entity Body

unirest
  .post('http://mockbin.com/request')
  .headers({'Accept': 'application/json'})
  .send(Buffer.from([1,2,3]))
  .then(function (response) {
    console.log(response.body)
  })

Unirest

A request can be initiated by invoking the appropriate method on the unirest object, then calling .end() to send the request. Alternatively you can send the request directly by providing a callback along with the url.

unirest(method [, uri, headers, body, callback])

  • method - Request type (GET, PUT, POST, etc...)
  • uri - Optional; When passed will return a Request object. Otherwise returns generated function with method pre-defined (e.g. unirest.get)
  • headers (Object) - Optional; HTTP Request headers
  • body (Mixed) - Optional; HTTP Request body
  • callback (Function) - Optional; Invoked when Request has finalized with the argument Response

unirest[method](url [, headers, body, callback])

  • method - Request type, pre-defined methods, see below.
  • url - Request location.
  • headers (Object | Function) - Optional; When Object headers are passed along to the Request.header method, when Function this argument is used as the callback.
  • body (Mixed | Function) - Optional; When body is not a Function it will be passed along to Request.send() method, otherwise when a Function it will be used as the callback.
  • callback (Function) - Optional; Calls end with given argument, otherwise Request is returned.

All arguments above, with the exclusion of url, will accept a Function as the callback. When no callback is present, the Request object will be returned.

get

Returns a Request object with the method option set to GET

var Request = unirest.get('http://mockbin.com/request')

head

Returns a Request object with the method option set to HEAD

let Request = unirest.head('http://mockbin.com/request')

put

Returns a Request object with the method option set to PUT

let Request = unirest.put('http://mockbin.com/request')

post

Returns a Request object with the method option set to POST

let Request = unirest.post('http://mockbin.com/request')

patch

Returns a Request object with the method option set to PATCH

let Request = unirest.patch('http://mockbin.com/request')

delete

Returns a Request object with the method option set to DELETE

let Request = unirest.delete('http://mockbin.com/request')

unirest.jar()

Creates a container to store multiple cookies, i.e. a cookie jar.

let CookieJar = unirest.jar()
CookieJar.add('key=value', '/')

unirest
  .get('http://mockbin.com/request')
  .jar(CookieJar)

unirest.cookie(String)

Creates a cookie, see above for example.

unirest.request

mikeal/request library (the underlying layer of unirest) for direct use.

Request

Provides simple and easy to use methods for manipulating the request prior to being sent. This object is created when a Unirest Method is invoked. This object contains methods that are chainable like other libraries such as jQuery and popular request module Superagent (which this library is modeled after slightly).

Example

var Request = unirest.post('http://mockbin.com/request');

Request
  .header('Accept', 'application/json')
  .end(function (response) {
    ...
  })

Request Methods

Request Methods differ from Option Methods (See Below) in that these methods transform, or handle the data in a sugared way, where as Option Methods require a more hands on approach.

Request.auth(Object) or (user, pass, sendImmediately)

Accepts either an Object containing user, pass, and optionally sendImmediately.

  • user (String) - Authentication Username
  • pass (String) - Authentication Password
  • sendImmediately (String) - Optional; Defaults to true; Flag to determine whether Request should send the basic authentication header along with the request. Upon being false, Request will retry with a proper authentication header after receiving a 401 response from the server (which must contain a WWW-Authenticate header indicating the required authentication method)

Object

Request.auth({
  user: 'Nijiko',
  pass: 'insecure',
  sendImmediately: true
})

Arguments

Request.auth('Nijiko', 'insecure', true)

Request.header(header[, value])

Suggested Method for setting Headers

Accepts either an Object containing header-name: value entries, or field and value arguments. Each entry is then stored in a two locations, one in the case-sensitive Request.options.headers and the other on a private _headers object that is case-insensitive for internal header lookup.

  • field (String) - Header name, such as Accepts
  • value (String) - Header value, such as application/json

Object

Request.headers({
  'Accept': 'application/json',
  'User-Agent': 'Unirest Node.js'
})

Note the usage of Request.headers which is simply an alias to the Request.header method, you can also use Request.set to set headers.

Arguments

Request.header('Accept', 'application/json');

Request.part(Object)

Experimental

Similiar to Request.multipart() except it only allows one object to be passed at a time and does the pre-processing on necessary body values for you.

Each object is then appended to the Request.options.multipart array.

Request
  .part({
    'content-type': 'application/json',
    body: { foo: 'bar' }
  })
  .part({
    'content-type': 'text/html',
    body: '<strong>Hello World!</strong>'
  })

Request.query(Object) or (String)

Serializes argument passed to a querystring representation.

Should url already contain a querystring, the representation will be appended to the url.

unirest
  .post('http://mockbin.com/request')
  .query('name=nijiko')
  .query({
    pet: 'spot'
  })
  .then((response) => {
    console.log(response.body)
  })

Request.send(Object | String)

Data marshalling for HTTP request body data

Determines whether data mime-type is form or json. For irregular mime-types the .type() method is used to infer the content-type header.

When mime-type is application/x-www-form-urlencoded data is appended rather than overwritten.

JSON

unirest
  .post('http://mockbin.com/request')
  .type('json')
  .send({
    foo: 'bar',
    hello: 3
  })
  .then((response) => {
    console.log(response.body)
  })

FORM Encoded

// Body would be:
// name=nijiko&pet=turtle
unirest
  .post('http://mockbin.com/request')
  .send('name=nijiko')
  .send('pet=spot')
  .then((response) => {
    console.log(response.body)
  })

HTML / Other

unirest
  .post('http://mockbin.com/request')
  .set('Content-Type', 'text/html')
  .send('<strong>Hello World!</strong>')
  .then((response) => {
    console.log(response.body)
  })

Request.type(String)

Sets the header Content-Type through either lookup for extensions (xml, png, json, etc...) using mime or using the full value such as application/json.

Uses Request.header to set header value.

Request.type('application/json') // Content-Type: application/json
Request.type('json') // Content-Type: application/json
Request.type('html') // Content-Type: text/html

Request Form Methods

The following methods are sugar methods for attaching files, and form fields. Instead of handling files and processing them yourself Unirest can do that for you.

Request.attach(Object) or (name, path)

Object should consist of name: 'path' otherwise use name and path.

  • name (String) - File field name
  • path (String | Object) - File value, A String will be parsed based on its value. If path contains http or https Request will handle it as a remote file. If path does not contain http or https then unirest will assume that it is the path to a local file and attempt to find it using path.resolve. An Object is directly set, so you can do pre-processing if you want without worrying about the string value.

Object

unirest
  .post('http://mockbin.com/request')
  .header('Accept', 'application/json')
  .field({
    'parameter': 'value'
  })
  .attach({
    'file': 'dog.png',
    'relative file': fs.createReadStream(path.join(__dirname, 'dog.png')),
    'remote file': unirest.request('http://google.com/doodle.png')
  })
  .then((response) => {
    console.log(response.body)
  })

Arguments

unirest
  .post('http://mockbin.com/request')
  .header('Accept', 'application/json')
  .field('parameter', 'value') // Form field
  .attach('file', 'dog.png') // Attachment
  .attach('remote file', fs.createReadStream(path.join(__dirname, 'dog.png')))  // Same as above.
  .attach('remote file', unirest.request('http://google.com/doodle.png'))
  .then((response) => {
    console.log(response.body)
  })

Request.field(Object) or (name, value)

Object should consist of name: 'value' otherwise use name and value

See Request.attach for usage.

Request.stream()

Sets _stream flag to use request streaming instead of direct form-data usage. This seemingly appears to only work for node servers, use streaming only if you are a hundred percent sure it will work. Tread carefully.

Request.options

The options object is where almost all of the request settings live. Each option method sugars to a field on this object to allow for chaining and ease of use. If you have trouble with an option method and wish to directly access the options object you are free to do so.

This object is modeled after the request libraries options that are passed along through its constructor.

  • url (String | Object) - Url, or object parsed from url.parse()
  • qs (Object) - Object consisting of querystring values to append to url upon request.
  • method (String) - Default GET; HTTP Method.
  • headers (Object) - Default {}; HTTP Headers.
  • body (String | Object) - Entity body for certain requests.
  • form (Object) - Form data.
  • auth (Object) - See Request.auth() below.
  • multipart (Object) - Experimental; See documentation below.
  • followRedirect (Boolean) - Default true; Follow HTTP 3xx responses as redirects.
  • followAllRedirects (Boolean) - Default false; Follow Non-GET HTTP 3xx responses as redirects.
  • maxRedirects (Number) - Default 10; Maximum number of redirects before aborting.
  • encoding (String) - Encoding to be used on setEncoding of response data.
  • timeout (Number) - Number of milliseconds to wait before aborting.
  • proxy (String) - See Request.proxy() below.
  • oauth (Object) - See Request.oauth() below.
  • hawk (Object) - See Request.hawk() below
  • strictSSL (Boolean) - Default true; See Request.strictSSL() below.
  • secureProtocol (String) - See Request.secureProtocol() below.
  • jar (Boolean | Jar) - See Request.jar() below.
  • aws (Object) - See Request.aws() below.
  • httpSignature (Object) - See Request.httpSignature() Below.
  • localAddress (String) - See Request.localAddress() Below.
  • pool (Object) - See Request.pool() Below.
  • forever (Boolean) - Default undefined; See Request.forever() Below

Request Option Methods

Request.url(String)

Sets url location of the current request on Request.options to the given String

Request.url('http://mockbin.com/request');

Request.method(String)

Sets method value on Request.options to the given value.

Request.method('HEAD');

Request.form(Object)

Sets form object on Request.options to the given object.

When used body is set to the object passed as a querystring representation and the Content-Type header to application/x-www-form-urlencoded; charset=utf-8

Request.form({
  key: 'value'
})

Request.multipart(Array)

Experimental

Sets multipart array containing multipart-form objects on Request.options to be sent along with the Request.

Each objects property with the exclusion of body is treated as a header value. Each body value must be pre-processed if necessary when using this method.

Request.multipart([{
  'content-type': 'application/json',
  body: JSON.stringify({
    foo: 'bar'
  })
}, {
  'content-type': 'text/html',
  body: '<strong>Hello World!</strong>'
}])

Request.maxRedirects(Number)

Sets maxRedirects, the number of redirects the current Request will follow, on Request.options based on the given value.

Request.maxRedirects(6)

Request.followRedirect(Boolean)

Sets followRedirect flag on Request.options for whether the current Request should follow HTTP redirects based on the given value.

Request.followRedirect(true);

Request.timeout(Number)

Sets timeout, number of milliseconds Request should wait for a response before aborting, on Request.options based on the given value.

Request.timeout(2000)

Request.encoding(String)

Sets encoding, encoding to be used on setEncoding of response data if set to null, the body is returned as a Buffer, on Request.options based on given value.

Request.encoding('utf-8')

Request.strictSSL(Boolean)

Sets strictSSL flag to require that SSL certificates be valid on Request.options based on given value.

Request.strictSSL(true)

Request.httpSignature(Object)

Sets httpSignature

Request.proxy(String)

Sets proxy, HTTP Proxy to be set on Request.options based on value.

Request.proxy('http://localproxy.com')

Request.secureProtocol(String)

Sets the secure protocol to use:

Request.secureProtocol('SSLv2_method')
// or
Request.secureProtocol('SSLv3_client_method')

See openssl.org for all possible values.

Request.aws(Object)

Sets aws, AWS Signing Credentials, on Request.options

Request.aws({
  key: 'AWS_S3_KEY',
  secret: 'AWS_S3_SECRET',
  bucket: 'BUCKET NAME'
})

Request.oauth(Object)

Sets oauth, list of oauth credentials, on Request.options based on given object.

unirest
  .get('https://api.twitter.com/oauth/request_token')
  .oauth({
    callback: 'http://mysite.com/callback/',
    consumer_key: 'CONSUMER_KEY',
    consumer_secret: 'CONSUMER_SECRET'
  })
  .then(response => {
    let access_token = response.body

    return unirest
      .post('https://api.twitter.com/oauth/access_token')
      .oauth({
        consumer_key: 'CONSUMER_KEY',
        consumer_secret: 'CONSUMER_SECRET',
        token: access_token.oauth_token,
        verifier: token: access_token.oauth_verifier
      })
  })
  .then((response) => {
    var token = response.body

    return unirest
      .get('https://api.twitter.com/1/users/show.json')
      .oauth({
        consumer_key: 'CONSUMER_KEY',
        consumer_secret: 'CONSUMER_SECRET',
        token: token.oauth_token,
        token_secret: token.oauth_token_secret
      })
      .query({
        screen_name: token.screen_name,
        user_id: token.user_id
      })
  })
  .then((response) => {
    console.log(response.body)
  })

Request.hawk(Object)

Sets hawk object on Request.options to the given object.

Hawk requires a field credentials as seen in their documentation, and below.

Request.hawk({
  credentials: {
    key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
    algorithm: 'sha256',
    user: 'Steve'
  }
})

Request.localAddress(String)

Sets localAddress, local interface to bind for network connections, on Request.options

Request.localAddress('127.0.0.1')
Request.localAddress('1.2.3.4')

Request.jar(Boolean) or Request.jar(Jar)

Sets jar, cookie container, on Request.options. When set to true it stores cookies for future usage.

See unirest.jar for more information on how to use Jar argument.

Request.pool(Object)

Sets pool object on Request.options to the given object.

A maxSockets property can also be provided on the pool object to set the max number of sockets for all agents created.

Note that if you are sending multiple requests in a loop and creating multiple new pool objects, maxSockets will not work as intended. To work around this, create the pool object with the maxSockets property outside of the loop.

poolOption = { maxSockets: 100 }

Request.pool poolOption

Request.forever(Boolean)

Sets forever flag to use forever-agent module. When set to true, default http agent will be replaced by forever-agent, which keeps socket connections alive between keep-alive requests.

Request.forever(true);

Request.then(Function callback)

Promise polyfill method. Wraps Request.end in a Promise and will resolve or reject based on the result of the request.

unirest
  .get('http://mockbin.com/request')
  .then((response) => {
    console.log(response)
  })
  .catch(err => {
    console.log(err)
  })

Request.end(Function callback)

Sends HTTP Request and awaits Response finalization. Request compression and Response decompression occurs here. Upon HTTP Response post-processing occurs and invokes callback with a single argument, the [Response](#response) object.

unirest
  .get('http://mockbin.com/request')
  .end((response) => {
    console.log(response)
  })

Request Aliases

Request.set

Alias for Request.header()

Request.headers

Alias for Request.header()

Request.redirects

Alias for Request.maxRedirects()

Request.redirect

Alias for Request.followRedirect()

Request.ssl

Alias for Request.strictSSL()

Request.ip

Alias for Request.localAddress()

Request.complete

Alias for Request.end()

Request.as.json

Alias for Request.end()

Request.as.binary

Alias for Request.end()

Request.as.string

Alias for Request.end()

Response

Upon ending a request, and receiving a Response the object that is returned contains a number of helpful properties to ease coding pains.

General

  • body (Mixed) - Processed body data
  • raw_body (Mixed) - Unprocessed body data
  • headers (Object) - Header details
  • cookies (Object) - Cookies from set-cookies, and cookie headers.
  • httpVersion (String) - Server http version. (e.g. 1.1)
  • httpVersionMajor (Number) - Major number (e.g. 1)
  • httpVersionMinor (Number) - Minor number (e.g. 1)
  • url (String) - Dependant on input, can be empty.
  • domain (String | null) - Dependant on input, can be empty.
  • method (String | null) - Method used, dependant on input.
  • client (Object) - Client Object. Detailed information regarding the Connection and Byte throughput.
  • connection (Object) - Client Object. Specific connection object, useful for events such as errors. Advanced
  • socket (Object) Client Object. Socket specific object and information. Most throughput is same across all three client objects.
  • request (Object) - Initial request object.
  • setEncoding (Function) - Set encoding type.

Status Information

  • code (Number) - Status Code, i.e. 200
  • status (Number) - Status Code, same as above.
  • statusType (Number) - Status Code Range Type
    • 1 - Info
    • 2 - Ok
    • 3 - Miscellaneous
    • 4 - Client Error
    • 5 - Server Error
  • info (Boolean) - Status Range Info?
  • ok (Boolean) - Status Range Ok?
  • clientError (Boolean) - Status Range Client Error?
  • serverError (Boolean) - Status Range Server Error?
  • accepted (Boolean) - Status Code 202?
  • noContent (Boolean) - Status Code 204 or 1223?
  • badRequest (Boolean) - Status Code 400?
  • unauthorized (Boolean) - Status Code 401?
  • notAcceptable (Boolean) - Status Code 406?
  • notFound (Boolean) - Status Code 404?
  • forbidden (Boolean) - Status Code 403?
  • error (Boolean | Object) - Dependant on status code range.

response.cookie(name)

Sugar method for retrieving a cookie from the response.cookies object.

var CookieJar = unirest.jar();
CookieJar.add(unirest.cookie('another cookie=23'));

unirest.get('http://google.com').jar(CookieJar).end(function (response) {
  // Except google trims the value passed :/
  console.log(response.cookie('another cookie'));
});

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Made with from the Kong team

More Repositories

1

kong

🦍 The Cloud-Native API Gateway and AI Gateway.
Lua
37,159
star
2

insomnia

The open-source, cross-platform API client for GraphQL, REST, WebSockets and gRPC.
JavaScript
30,407
star
3

unirest-java

Unirest in Java: Simplified, lightweight HTTP client library.
Java
2,560
star
4

kubernetes-ingress-controller

🦍 Kong for Kubernetes: The official Ingress Controller for Kubernetes.
Go
2,127
star
5

swrv

Stale-while-revalidate data fetching for Vue
TypeScript
2,048
star
6

mockbin

Mock, Test & Track HTTP Requests and Response for Microservices
JavaScript
1,988
star
7

mashape-oauth

OAuth Modules for Node.js - Supporting RSA, HMAC, PLAINTEXT, 2,3-Legged, 1.0a, Echo, XAuth, and 2.0
JavaScript
1,781
star
8

docker-kong

🐒 Docker distribution for Kong
Shell
1,351
star
9

unirest-php

Unirest in PHP: Simplified, lightweight HTTP client library.
PHP
1,282
star
10

httpsnippet

HTTP Request snippet generator for many languages & libraries
TypeScript
1,061
star
11

guardian

Remove the OAuth dance with one request.
JavaScript
640
star
12

unirest-python

Unirest in Python: Simplified, lightweight HTTP client library.
Python
432
star
13

deck

decK: Configuration management and drift detection for Kong
Go
419
star
14

apiembed

Embeddable API code snippets for your website, blog or API documentation
Pug
402
star
15

unirest-ruby

Unirest in Ruby: Simplified, lightweight HTTP client library.
Ruby
365
star
16

unirest-obj-c

Unirest in Objective-C: Simplified, lightweight HTTP client library.
Objective-C
276
star
17

kong-dist-kubernetes

Kubernetes managed Kong cluster
Shell
255
star
18

kong-plugin

Simple template to get started with custom Kong plugins
Lua
230
star
19

charts

Helm chart for Kong
Mustache
224
star
20

unirest-net

Unirest in .NET: Simplified, lightweight HTTP client library.
C#
190
star
21

lua-resty-worker-events

Cross Worker Events for Nginx in Pure Lua
Lua
186
star
22

docs.konghq.com

🦍 Source code for docs.konghq.com website.
Ruby
186
star
23

kong-oauth2-hello-world

This is a simple node.js + express.js application that shows an authorization page for the OAuth 2.0 plugin on Kong.
JavaScript
173
star
24

kong-manager

Admin GUI for Kong Gateway (Official)
TypeScript
170
star
25

lua-resty-dns-client

Lua DNS client, load balancer, and utility library
Lua
151
star
26

kong-pongo

Tooling to run plugin tests with Kong and Kong Enterprise
Lua
139
star
27

go-pdk

Kong Go Plugin Development Kit
Go
126
star
28

kong-vagrant

🐒 Vagrantfile for Kong testing and development
Shell
125
star
29

kongponents

🦍 Kong Vue Component Library
Vue
119
star
30

lua-resty-healthcheck

Healthcheck library for OpenResty to validate upstream service status
Lua
119
star
31

kong-plugin-prometheus

Prometheus plugin for Kong - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
119
star
32

apiglossary

Open source glossary of API terms, acronyms and industry buzzwords.
95
star
33

go-plugins

A collection of Kong plugins written in Go
Go
86
star
34

go-kong

Go binding for Kong's admin API
Go
81
star
35

kong-terraform-aws

Kong Terraform Module for AWS
HCL
77
star
36

kong-build-tools

Build tools to package and release Kong
Shell
77
star
37

homebrew-kong

🐒 Homebrew tap for Kong
Ruby
69
star
38

kong-dist-cloudformation

🐒 Kong CloudFormation Stack
66
star
39

go-pluginserver

Kong Go Plugin Server
Go
66
star
40

ngx_wasm_module

Nginx + WebAssembly
C
64
star
41

kong-plugin-zipkin

A Kong plugin for propogating zipkin spans and reporting spans to a zipkin server - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
60
star
42

kong-operator

Kong Operator for Kubernetes and OpenShift
Mustache
58
star
43

lua-multipart

Multipart Parser for Lua
Lua
55
star
44

mashape-php-library

Mashape PHP Server Library - Easily create an API in PHP. You can use it for existing services or brand new cloud components.
PHP
50
star
45

gojira

Multi-purpose tool to ease development and testing of Kong by using Docker containers
Shell
45
star
46

HARchiver

[Deprecated] Universal Lightweight Proxy for Galileo
OCaml
41
star
47

koko

koko - Control Plane for Kong Gateway [open-source]
Go
41
star
48

unirest-website

Simplified, lightweight HTTP libraries in multiple languages
HTML
39
star
49

kong-python-pdk

Write Kong plugins in Python
Python
39
star
50

go-srp

Secure Remote Password library for Go
Go
38
star
51

tcpbin

TCP Request & Response Service, written in node.js
HTML
37
star
52

kong-portal-templates

Themes, components, and utilities to help you get started with the Kong Dev Portal.
CSS
35
star
53

kong-plugin-acme

Let's Encrypt and ACMEv2 integration with Kong - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
34
star
54

kong-mesh-dist-kubernetes

Start Kong 1.0 as a K8s sidecar
Makefile
33
star
55

kubernetes-testing-framework

Golang Integration Testing Framework For Kubernetes APIs and Controllers.
Go
32
star
56

gateway-operator

Go
32
star
57

demo-scene

🦍 a collection of demos and examples around Kong tools and technologies
JavaScript
30
star
58

docker-java8

A Dockerfile for starting a container with Java 8 installed
30
star
59

lua-kong-nginx-module

Nginx C module to allow deeper control of Nginx behaviors by Kong Lua code
Perl
30
star
60

Astronode-Broadcaster

A TCP replication server, or broadcaster, that replicates TCP commands to other TCP servers
Java
29
star
61

opentracing-lua

Opentracing Library for Lua
Lua
28
star
62

konnect-portal

Konnect OSS Dev Portal
TypeScript
28
star
63

atc-router

Expression based matching library for Kong
Rust
28
star
64

kong-js-pdk

Kong PDK for Javascript and plugin server
JavaScript
28
star
65

boss.js

Automatically load balance asyncronous jobs across multiple processes in a round-robin fashion.
JavaScript
27
star
66

kong-portal-cli

Kong Developer Portal CLI
TypeScript
25
star
67

lua-uuid

Lua library to generate UUIDs leveraging libuuid
Lua
25
star
68

insomnia-docs

This repository houses all Insomnia documentation.
JavaScript
25
star
69

lua-resty-lmdb

Safe API for manipulating LMDB databases using OpenResty/Lua.
C
24
star
70

lua-resty-aws

AWS SDK for OpenResty
Lua
22
star
71

lua-resty-timer

Extended timers for OpenResty
Perl
22
star
72

lua-resty-events

Inter process Pub/Sub pattern for Nginx worker processes
Perl
22
star
73

kong-plugin-request-transformer

Kong request transformer plugin - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
21
star
74

lua-resty-counter

Lock-free counter for OpenResty
Perl
21
star
75

kong-plugin-session

🍪 Session plugin for Kong - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
20
star
76

lua-pack

A library for packing and unpacking binary data.
C
20
star
77

go-apiops

Kong's Go based APIOps library
Go
18
star
78

swagger-ui-kong-theme

Plugin theme for Swagger-UI that adds snippets
JavaScript
18
star
79

api-log-format

Specification and examples of the new API logging format ALF
17
star
80

kong-plugin-serverless-functions

Kong Serverless Plugins - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
17
star
81

apistatus

API status is a simple tool that checks if an API is online. http://apistatus.org
JavaScript
15
star
82

openresty-patches

Moved to https://github.com/Kong/kong-build-tools
Perl
14
star
83

kong-plugin-grpc-gateway

Kong Plugin to transcode REST request to gRPC - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
14
star
84

lua-resty-consul-event

Consul Events HTTP API Wrapper
Perl
14
star
85

srp-js

Fork of node-srp modified to work in the browser
TypeScript
14
star
86

harplayer

Replay HAR logs
JavaScript
13
star
87

kong-plugin-aws-lambda

AWS Lambda plugin - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
13
star
88

openresty-build-tools

Moved to https://github.com/Kong/kong-build-tools
Shell
13
star
89

jenkins-infrastructure

Cloudformation to create and update an ECS cluster that runs jenkins
Shell
12
star
90

kong-plugin-proxy-cache

HTTP Proxy Caching for Kong - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Lua
12
star
91

openapi2kong

Lib to convert OpenAPI specs into Kong specs
Lua
12
star
92

version.lua

Simple version comparison library
Lua
11
star
93

httpbin

Python
11
star
94

changelog-generator

a changelog generator focused on flexibility and ease of use
TypeScript
11
star
95

vault-kong-secrets

A Kong secrets backend for Vault
Go
11
star
96

py-postgrest

A library to work with PostgREST based APIs from Python
Python
11
star
97

priority-updater

Tool to quickly create a plugin with an updated priority
Lua
11
star
98

galileo-agent-java

Java Agent for Mashape Galileo
Java
10
star
99

kong-plugin-openwhisk

A kong plugin to invoke OpenWhisk action (serverless functions as service).
Lua
10
star
100

kong-upgrade-tests

Tests for upgrading from one Kong version to the next
Shell
10
star