rackerlabs / repose

The powerful, programmable, API Middleware Platform
http://www.openrepose.org/
Other
338 stars 103 forks source link

....


/\ == \ /\ _\ /\ == \ /\ _ \ /\ \ /\ \ \ \ / \ \ \ \ \ -/ \ \ \/\ \ \ _ \ \ \ \ \ _\ _\ \ ___\ \ _\ \ _\ \/_\ \ _\ \// // \/____/ \// \/____/ \// \/_____/

                .'.-:-.`.
                .'  :  `.
                '   :   '   /
             .------:--.   /
           .'           `./
    ,.    /            0  \
    \ ' _/                 )

....

= REPOSE - The REstful PrOxy Service Engine

*Repose* is an open-source platform that you can use to build stacks of reusable software
components. These components can be leveraged by service developers to perform
common API processing tasks. By using *Repose*'s components rather than creating their
own, service developers can focus on the unique features of their services.

*Repose* is run as a standalone application (either as a Linux service or using the
JAR directly). *Repose* can be run on the same server or on a different server, and
it can be run across multiple servers for horizontal scaling. At its core, *Repose* is a
proxy that allows services to use Enterprise Integration Patterns (EIP).

For more information, check out our http://www.openrepose.org/versions/latest/recipes/getting-started.html[Getting Started with *Repose*] guide.

== Benefits

* *Scalable*. *Repose* is incredibly scalable because it is designed to be stateless.
* *Flexible*. *Repose* is run as a http://www.openrepose.org/versions/latest/recipes/valve-installation.html[standalone Linux service (Valve)].
* *Extensible*. New http://www.openrepose.org/versions/latest/filters/index.html[components]
  are being added all of the time, and you can even build your own
  https://github.com/rackerlabs/repose-hello-world[custom component].
* *High performance*. *Repose* can handle http://www.openrepose.org/versions/latest/recipes/performance-best-practices.html[high loads] with high accuracy.
* *Improving*. *Repose* continues to be under https://github.com/rackerlabs/repose/releases[active development].

== *Repose* Components

*Repose* includes several http://www.openrepose.org/versions/latest/filters/index.html[filters] and http://www.openrepose.org/versions/latest/services/index.html[services]
out of the box.  These include:

* http://www.openrepose.org/versions/latest/filters/rate-limiting.html[Rate Limiting]
* http://www.openrepose.org/versions/latest/filters/keystone-v2.html[Keystone v2 Auth]
* http://www.openrepose.org/versions/latest/filters/openstack-identity-v3.html[OpenStack v3 Auth]
* http://www.openrepose.org/versions/latest/filters/api-validator.html[API Validation]
* http://www.openrepose.org/versions/latest/filters/translation.html[Translation]
* http://www.openrepose.org/versions/latest/filters/compression.html[Compression]
* http://www.openrepose.org/versions/latest/filters/cors.html[CORS]
* http://www.openrepose.org/versions/latest/filters/versioning.html[Versioning]
* http://www.openrepose.org/versions/latest/filters/slf4j-http-logging.html[HTTP Logging]

*Repose* also makes it easy to create your own custom components.  Check out
our https://github.com/rackerlabs/repose-hello-world[example custom filter] for more details.

== Installation
You can install *Repose* using the following methods:

* http://www.openrepose.org/versions/latest/recipes/valve-installation.html#yum-based-linux-distributions[yum]
* http://www.openrepose.org/versions/latest/recipes/valve-installation.html#apt-based-linux-distributions[apt]
* http://www.openrepose.org/versions/latest/recipes/docker.html[Docker]
* https://github.com/rackerlabs/puppet-repose[Puppet]
* https://github.com/rackerlabs/cookbook-repose[Chef]

== Configuration

*Repose* will search for configuration files in the user specified directory.

* The configuration root directory must be user readable.
* The configuration files should be user readable and writable.

Setting the Configuration Root Directory.

* Simply pass the configuration directory to the Java process using the "-c" option.

== Licensing

Original files contained with this distribution of *Repose* are licensed under
the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0).

You must agree to the terms of this license and abide by them before using,
modifying, or distributing *Repose* or the *Repose* source code contained within
this distribution.

Some dependencies are under other licenses.

By using, modifying, or distributing *Repose* you may also be subject to the
terms of those licenses.

See the full list of dependencies in DEPENDENCIES.txt.

By contributing to this project, you agree to abide to the terms and conditions
outlined in CONTRIBUTORS.txt.