Hades

Hades is a hypermedia-based HTTP/2 reverse proxy for JSON:API servers.
Alternatives To Hades
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Frp65,427911 days ago78July 10, 2022108apache-2.0Go
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
Mitmproxy30,541423432 days ago53June 28, 2022261mitPython
An interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.
Grpc Gateway15,1904,659a day ago385August 06, 2022113bsd-3-clauseGo
gRPC to JSON proxy generator following the gRPC HTTP spec
Goproxy13,510
23 days ago17April 09, 2021110gpl-3.0Go
🔥 Proxy is a high performance HTTP(S) proxies, SOCKS5 proxies,WEBSOCKET, TCP, UDP proxy server implemented by golang. Now, it supports chain-style proxies,nat forwarding in different lan,TCP/UDP port forwarding, SSH forwarding.Proxy是golang实现的高性能http,https,websocket,tcp,socks5代理服务器,支持内网穿透,链式代理,通讯加密,智能HTTP,SOCKS5代理,黑白名单,限速,限流量,限连接数,跨平台,KCP支持,认证API。
Node Http Proxy13,281398,0652,9325 days ago103May 17, 2020577otherJavaScript
A full-featured http proxy for node.js
Whistle11,98511173 days ago539September 13, 202227mitJavaScript
HTTP, HTTP2, HTTPS, Websocket debugging proxy
Http Proxy Middleware9,802359,5366,5287 days ago78April 22, 202287mitTypeScript
:zap: The one-liner node.js http-proxy middleware for connect, express, next.js and more
Proxychains Ng8,570
9 days ago119gpl-2.0C
proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies. continuation of the unmaintained proxychains project. the sf.net page is currently not updated, use releases from github release page instead.
Cow8,204
2 years agoJune 19, 2016240bsd-2-clauseGo
HTTP proxy written in Go. COW can automatically identify blocked sites and use parent proxies to access.
Anyproxy7,19373131a year ago176June 18, 2020241apache-2.0JavaScript
A fully configurable http/https proxy in NodeJS
Alternatives To Hades
Select To Compare


Alternative Project Comparisons
Readme

Hades

Hades is an experimental HATEOAS-based HTTP/2 reverse proxy for JSON API backends.

Why?

The JSON API specification makes ample use of links objects in its specification. These links objects contain URLs which enable a client to easily and automatically traverse documents to fetch subsequent pages, relationship data and related resources.

With the ever increasing deployment of HTTP/2, these HATEOAS links become much more relevant, especially when they can be pushed to the client before the client even requests them.

Hades is an intelligent reverse proxy that can be deployed in front of any JSON API server.

Clients that are HTTP/2 capable can then send an X-Push-Please request header to your application. The values of this header should be comprised of JSONPath selectors which target links in the expected response document. Hades will identify these links and proactively push the linked resources to the client.

Clients that are not HTTP/2 capable can also send these headers, Hades will simply not push the responses. Future versions of Hades might make further optimizations (like using the request to warm a server-side application cache).

Example

Take a JSON API server with issue, comment and user resource types as an example.

A client would like to list the 10 most recent issues and embed user avatars for every participant in the issue.

In JSON API terms, the data model is structured such that:

  1. Issues have a relationship to comments
  2. Comments have an author relationship to users
  3. User resources have an attribute that specifies a URL for the user's avatar

issue -> comment -> user -> avatar

Traditionally, one might use the include query parameter to receive a compound document response. The compound document would embed the chain of resources in a single response. However, in this scenario, issues do not support includes on comments. They would be far too numerous—if 10 issues each have 100 comments, the compound document would have 1000 resources!

This means that a client will first need to:

  1. Fetch the first 10 issues
  2. Fetch from the related or relationship routes for each issue
  3. Fetch the user resource for each unique author
  4. Finally, download the user's avatar file using a download URL on the user resource

This chain of requests is often called the "waterfall." Each step needs to be completed before the next step can proceed because the client can't know which resources to fetch in advance.

In other words, the client can't know which users to fetch if it doesn't know which comments are on an issue... and the client can't know which comments to fetch without first fetching the issues.

Hades solves this problem. By specifying the following request, a client can inform the Hades proxy which resources it's going to fetch and Hades can then proactively push those resources to the client.

GET /api/issues?sort=-created&page[limit]=10

X-Push-Please: $.data[*].relationships.comments.links.related
X-Push-Please: $.data[*].relationships.author.links.related
X-Push-Please: $.data.attributes.avatar.url

Multiple headers are permitted by HTTP/2. Alternatively, values may be concatenated with ;

Hades can use this information to identify the links in the response document that the client will eventually require. Future versions will permit response IDs in the X-Push-Please header so that link paths can target only specific responses.

Apart from the client-sent header, client applications need not be adapted in any way. When the client recieves the initial response document, it should still request the subsequent documents just as it would under HTTP/1.1.

However, because those request responses will have already been pushed, they will already be in a local cache or on the way! That means all responses will appear to have been received as if the client sent all the requests at the same time.

Hades eliminates the waterfall.

🔥

Popular Proxy Projects
Popular Http Projects
Popular Networking Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Golang
Json
Http
Proxy
Fetch