Giter Site home page Giter Site logo

api-umbrella's Introduction

API Umbrella

What Is API Umbrella?

API Umbrella is an open source API management platform for exposing web service APIs. The basic goal of API Umbrella is to make life easier for both API creators and API consumers. How?

  • Make life easier for API creators: Allow API creators to focus on building APIs.
    • Standardize the boring stuff: APIs can assume the boring stuff (access control, rate limiting, analytics, etc.) is already taken care if the API is being accessed, so common functionality doesn't need to be implemented in the API code.
    • Easy to add: API Umbrella acts as a layer above your APIs, so your API code doesn't need to be modified to take advantage of the features provided.
    • Scalability: Make it easier to scale your APIs.
  • Make life easier for API consumers: Let API consumers easily explore and use your APIs.
    • Unify disparate APIs: Present separate APIs as a cohesive offering to API consumers. APIs running on different servers or written in different programming languages can be exposed at a single endpoint for the API consumer.
    • Standardize access: All your APIs are can be accessed using the same API key credentials.
    • Standardize documentation: All your APIs are documented in a single place and in a similar fashion.

Components

API Umbrella is broken into several components:

  • API Umbrella Gatekeeper: A custom reverse proxy to control access to your APIs. Performs API key validation, request rate limiting, and gathers analytics.
  • API Umbrella Router: Combines reverse proxies (API Umbrella Gatekeeper and nginx) to route requests to the appropriate backend. Ensures all API requests are approved by the gatekeeper and gives the appearance of unified APIs.
  • API Umbrella Web: A web application for providing API documentation and API key signup. Also provides the admin interface for managing documentation, users, and viewing analytics.

Dependencies

Don't sweat this list, though—installation and configuration of everything can be automated through Chef. See Running API Umbrella below for details.

Running API Umbrella

The easiest way to get started with API Umbrella is to use Vagrant to setup a local development environment.

First install VirtualBox and Vagrant (version 1.5 or higher) on your computer. Then follow these steps:

# Install the Vagrant Berkshelf plugin (version 2.0.1 or higher).
$ vagrant plugin install vagrant-berkshelf --plugin-version '>= 2.0.1'

# Get the code
$ git clone https://github.com/NREL/api-umbrella.git
$ cd api-umbrella
$ git submodule update --init --recursive

# Add api.vagrant to your hosts file.
$ sudo sh -c 'echo "10.10.10.2 api.vagrant" >> /etc/hosts'

# Bootstrap a local VM environment (this will take a while)
$ vagrant up

# Login to your local VM
$ vagrant ssh

# Setup the apps on your local VM
$ cd /vagrant/workspace/router
$ bundle install --path=/srv/sites/router/shared/vendor/bundle
$ cap vagrant deploy

$ cd /vagrant/workspace/web
$ cp config/mongoid.yml.deploy config/mongoid.yml && cp config/elasticsearch.yml.deploy config/elasticsearch.yml
$ bundle install --path=/srv/sites/web/shared/vendor/bundle
$ cap vagrant deploy
$ rake db:seed
$ bundle exec rails runner 'ConfigVersion.publish!'

# Tada?

Assuming all that goes smoothly, you should be able see the homepage at http://localhost:8080/

Problems? Open an issue.

Getting Started

Once you have API Umbrella up and running, there are a variety of things you can do to start using the platform. For a quick tutorial see getting started.

Deploying to Production

Migrating to other servers or a production environment can be largely handled by Chef and Capistrano:

  1. Setup your servers using Chef and the available cookbooks and roles.
  2. Deploy api-umbrella-router and api-umbrella-web with Capistrano: cap production deploy

Who's using API Umbrella?

Are you using API Umbrella? Open an issue and let us know.

License

API Umbrella is open sourced under the MIT license.

githalytics.com alpha

api-umbrella's People

Contributors

gui avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.