Code2Life / http-adapter

A lightweight and extensible HTTP adapter, editable HTTP server, Webhook transformation, request relay platform.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Http Adapter logo

Build Status Coverage Status Codacy Badge codebeat badge Version Version License

Introduction

A lightweight and extensible HTTP adapter, editable HTTP server, Webhook transformation, request relay platform.

Just route, filter, validate, transform, relay and response your HTTP requests.

Setup your HTTP server in 3 minutes by a few YAML configurations and a few TS/JS code snippets. Especially suitable for:

  • HTTP adapter, such as transform one Webhook request to another
  • Request relay, it could be HTTP proxy for another server
  • Mock server, it could be a mock server for development
  • Dynamic HTTP interface, as BFF(backend for frontend) or API Gateway

Demo

todo

Features

  • Dynamic request routing by configuration files, configurable and extensible runtime environment
  • Easy to use YAML configuration files and GUI. Extremely convenient for request transformation
  • Dynamic business logic based on dynamic Typescript/ECMAScript code and Templates
  • Out of box Prometheus Metrics API and REST API for management
  • Perfect Scalability with Docker and Kubernetes
  • Great Performance since dynamic functions are compiled AOT (Ahead-of-Time)
  • Plugin development make complex business logic being configured dynamically

Architecture

Quick Start

Install

# by Docker (Recommended)
docker run --restart always -p 3000:3000 -d --name http-adapter code2life/http-adapter:v2
# by Docker, mount CONF_PATH
docker run --restart always -p 3000:3000 -d -e CONF_PATH=/conf -v /conf:/conf --name http-adapter code2life/http-adapter:v2

# by Kubernetes
kubectl apply -f https://raw.githubusercontent.com/Code2Life/http-adapter/master/build/kubernetes/deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/Code2Life/http-adapter/master/build/kubernetes/service.yaml

# by NPM (Requires Node > v8.0.0)
npm install -g node-adapter-cli
http-adapter

# to see all available arguments
http-adapter --help

Configuration Example

todo

Plugins

todo

Todo

  • pre-installed config examples, and downloaded by cli
  • HTTP2.0 HTTPS support
  • More storage types support
  • document template grammar, and allow separate template file
  • configure UI and REST interface, configure watch
  • mixin plugin / marketplace system, and plugin development, application version control
  • routing incoming websocket message
  • further logging / tracing / monitoring / metrics, eliminate console.log
  • transform to more forms of outbound message, such as RPC Call, MQ Publishing

About

A lightweight and extensible HTTP adapter, editable HTTP server, Webhook transformation, request relay platform.

License:Apache License 2.0


Languages

Language:TypeScript 87.4%Language:JavaScript 12.1%Language:Shell 0.3%Language:Dockerfile 0.1%