{"id":19982137,"url":"https://github.com/code2life/http-adapter","last_synced_at":"2025-05-04T05:32:16.001Z","repository":{"id":34646153,"uuid":"178558044","full_name":"Code2Life/http-adapter","owner":"Code2Life","description":"A lightweight and extensible HTTP adapter, editable HTTP server, Webhook transformation, request relay platform.","archived":false,"fork":false,"pushed_at":"2023-01-03T19:35:28.000Z","size":467,"stargazers_count":12,"open_issues_count":28,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-02T05:47:25.161Z","etag":null,"topics":["adapter","gateway","http-relay","http-server","koa","prometheus","relay","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Code2Life.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-30T12:51:18.000Z","updated_at":"2025-03-10T11:29:26.000Z","dependencies_parsed_at":"2023-01-15T08:19:21.750Z","dependency_job_id":null,"html_url":"https://github.com/Code2Life/http-adapter","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code2Life%2Fhttp-adapter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code2Life%2Fhttp-adapter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code2Life%2Fhttp-adapter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code2Life%2Fhttp-adapter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Code2Life","download_url":"https://codeload.github.com/Code2Life/http-adapter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252293082,"owners_count":21724960,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adapter","gateway","http-relay","http-server","koa","prometheus","relay","typescript"],"created_at":"2024-11-13T04:09:21.523Z","updated_at":"2025-05-04T05:32:15.451Z","avatar_url":"https://github.com/Code2Life.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"javascript:void(0);\" target=\"_blank\" rel=\"noreferrer\"\u003e\u003cimg width=\"300\" src=\"http://filecdn.code2life.top/logo_transparent.png\" alt=\"Http Adapter logo\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://circleci.com/gh/code2life/http-adapter/tree/master\"\u003e\u003cimg src=\"https://circleci.com/gh/Code2Life/http-adapter.svg?style=svg\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/code2life/http-adapter/\"\u003e\u003cimg src=\"https://img.shields.io/codecov/c/github/code2life/http-adapter/master.svg\" alt=\"Coverage Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.codacy.com/app/Code2Life/http-adapter?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Code2Life/http-adapter\u0026amp;utm_campaign=Badge_Grade\"\u003e\u003cimg src=\"https://api.codacy.com/project/badge/Grade/e93d8415d1074997abc36c2918f079e3\" alt=\"Codacy Badge\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codebeat.co/projects/github-com-code2life-http-adapter-master\"\u003e\u003cimg alt=\"codebeat badge\" src=\"https://codebeat.co/badges/190e8cb0-520f-46b1-8129-68197cf17248\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/node-adapter\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/node-adapter.svg\" alt=\"Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/code2life/http-adapter\"\u003e\u003cimg src=\"https://img.shields.io/docker/cloud/build/code2life/http-adapter.svg\" alt=\"Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/node-adapter\"\u003e\u003cimg src=\"https://img.shields.io/github/license/Code2Life/http-adapter.svg\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Introduction\nA lightweight and extensible HTTP adapter, editable HTTP server, Webhook transformation, request relay platform.\n\nJust route, filter, validate, transform, relay and response your HTTP requests.\n\nSetup your HTTP server in 3 minutes by a few YAML configurations and a few TS/JS code snippets.\n**Especially** suitable for:\n- HTTP adapter, such as transform one Webhook request to another\n- Request relay, it could be HTTP proxy for another server\n- Mock server, it could be a mock server for development\n- Dynamic HTTP interface, as BFF(backend for frontend) or API Gateway\n\n## Demo\ntodo\n\n## Features\n- Dynamic request routing by configuration files, configurable and extensible runtime environment\n- Easy to use YAML configuration files and GUI. Extremely convenient for request transformation\n- Dynamic business logic based on dynamic Typescript/ECMAScript code and Templates\n- Out of box Prometheus Metrics API and REST API for management\n- Perfect Scalability with Docker and Kubernetes\n- Great Performance since dynamic functions are compiled AOT (Ahead-of-Time)\n- Plugin development make complex business logic being configured dynamically\n\n## Architecture\n![](http://filecdn.code2life.top/http-adapter-architecture-v2.png)\n\n## Quick Start\n\n### Install\n```bash\n# by Docker (Recommended)\ndocker run --restart always -p 3000:3000 -d --name http-adapter code2life/http-adapter:v2\n# by Docker, mount CONF_PATH\ndocker run --restart always -p 3000:3000 -d -e CONF_PATH=/conf -v /conf:/conf --name http-adapter code2life/http-adapter:v2\n\n# by Kubernetes\nkubectl apply -f https://raw.githubusercontent.com/Code2Life/http-adapter/master/build/kubernetes/deployment.yaml\nkubectl apply -f https://raw.githubusercontent.com/Code2Life/http-adapter/master/build/kubernetes/service.yaml\n\n# by NPM (Requires Node \u003e v8.0.0)\nnpm install -g node-adapter-cli\nhttp-adapter\n\n# to see all available arguments\nhttp-adapter --help\n```\n\n### Configuration Example\n```yaml\ntodo\n```\n\n## Plugins\ntodo\n\n## Todo\n- pre-installed config examples, and downloaded by cli\n- HTTP2.0 HTTPS support\n- More storage types support\n- document template grammar, and allow separate template file\n- configure UI and REST interface, configure watch\n- mixin plugin / marketplace system, and plugin development, application version control\n- routing incoming websocket message\n- further logging / tracing / monitoring / metrics, eliminate console.log\n- transform to more forms of outbound message, such as RPC Call, MQ Publishing\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode2life%2Fhttp-adapter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode2life%2Fhttp-adapter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode2life%2Fhttp-adapter/lists"}