1 | # Diversion
|
2 |
|
3 | Diversion is an API versioning proxy based on
|
4 | [bouncy](http://github.com/substack/bouncy) and
|
5 | [semver](http://github.com/isaacs/node-semver), with an optional REST management
|
6 | API made with [Lazorse](http://github.com/BetSmartMedia/Lazorse). It interprets
|
7 | the `X-Version` header of incoming requests as version range, then uses semvers
|
8 | maxSatisfying algorithm to choose a backend. This means you have all the power
|
9 | of npm's version ranges (including ~0.2.1 style matching) in your X-Version
|
10 | headers.
|
11 |
|
12 | Diversion can automatically remove failed backends and retry requests, but
|
13 | currently the algorithm is a bit overzealous and has no health checking, so it's
|
14 | quite possible to end up with no live backends due to transient failure.
|
15 |
|
16 | Also included is a management API that listens on a different port and allows
|
17 | backends to register themselves with the proxy.
|
18 |
|
19 | ## License
|
20 |
|
21 | MIT
|