All Projects → wikimedia → Restbase

wikimedia / Restbase

Licence: apache-2.0
Distributed storage with REST API & dispatcher for backend services.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Restbase

Elassandra
Elassandra = Elasticsearch + Apache Cassandra
Stars: ✭ 1,610 (+1669.23%)
Mutual labels:  rest-api, cassandra
Udacity Data Engineering
Udacity Data Engineering Nano Degree (DEND)
Stars: ✭ 89 (-2.2%)
Mutual labels:  cassandra
Flask Restplus Server Example
Real-life RESTful server example on Flask-RESTplus
Stars: ✭ 1,240 (+1262.64%)
Mutual labels:  rest-api
Laravel Api Starter
laravel5.5 + dingo/api + JWT
Stars: ✭ 85 (-6.59%)
Mutual labels:  rest-api
Terraformize
Apply\Destory Terraform modules via a simple REST API endpoint.
Stars: ✭ 84 (-7.69%)
Mutual labels:  rest-api
Laravel Woocommerce
WooCommerce Rest API for Laravel
Stars: ✭ 86 (-5.49%)
Mutual labels:  rest-api
Current
C++ framework for realtime machine learning.
Stars: ✭ 81 (-10.99%)
Mutual labels:  rest-api
Laravel Rest Api
Powerful RestAPI plugin for Laravel
Stars: ✭ 90 (-1.1%)
Mutual labels:  rest-api
Async Gamequery Lib
A high-performance java game query library designed for steam/source based games and others
Stars: ✭ 88 (-3.3%)
Mutual labels:  rest-api
Mezzanine Api
RESTful web API for Mezzanine CMS
Stars: ✭ 84 (-7.69%)
Mutual labels:  rest-api
Evolutility Server Node
Model-driven REST or GraphQL backend for CRUD and more, written in Javascript, using Node.js, Express, and PostgreSQL.
Stars: ✭ 84 (-7.69%)
Mutual labels:  rest-api
Bhagavadgita
A non-profit initiative to help spread the transcendental wisdom from the Bhagavad Gita to people around the world.
Stars: ✭ 84 (-7.69%)
Mutual labels:  rest-api
Sample Dotnet Core Cqrs Api
Sample .NET Core REST API CQRS implementation with raw SQL and DDD using Clean Architecture.
Stars: ✭ 1,273 (+1298.9%)
Mutual labels:  rest-api
Drf Autodocs
Ultimately automated DRF documentation rendering(UNMAINTAINED)
Stars: ✭ 82 (-9.89%)
Mutual labels:  rest-api
Goapitutorial
📚 Building and Testing a REST API in GoLang using Gorilla Mux and MySQL
Stars: ✭ 89 (-2.2%)
Mutual labels:  rest-api
Bankflix
Aplicação que simula um banco digital, contendo a área do cliente e administrativa, permitindo depósitos e transferências entre contas do mesmo banco. | Application that simulates a digital bank, containing the customer and administrative areas, allowing deposits and transfers between accounts of the same bank.
Stars: ✭ 82 (-9.89%)
Mutual labels:  rest-api
Spring Boot Mongodb Angular Todo App
A Sample App built using Spring Boot, Angular and MongoDB
Stars: ✭ 84 (-7.69%)
Mutual labels:  rest-api
Aiocassandra
Simple threaded cassandra wrapper for asyncio
Stars: ✭ 86 (-5.49%)
Mutual labels:  cassandra
Chi
lightweight, idiomatic and composable router for building Go HTTP services
Stars: ✭ 10,581 (+11527.47%)
Mutual labels:  rest-api
Alfonz
Mr. Alfonz is here to help you build your Android app, make the development process easier and avoid boilerplate code.
Stars: ✭ 90 (-1.1%)
Mutual labels:  rest-api

RESTBase Build Status Coverage Status

RESTBase was built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content. It is basically a storage proxy, which presents a coherent API powered by Swagger specs to the outside, and backs up many of these entry points with storage. The default table storage backend is based on Cassandra, which helps it to perform well at Wikimedia's scale without placing undue burden on operations.

As a proxy, RESTBase does not perform any significant content processing itself. Instead, it requests content transformations from backend services when needed, and typically (depending on configuration) stores it back for later retrieval. For high-volume static end points, most requests will be satisfied directly from storage.

The table storage backends conform to a RESTful table storage API similar to Amazon DynamoDB and Google DataStore. The primary implementation uses Apache Cassandra. Notable features include automatically maintained secondary indexes and some lightweight transaction support. A SQLite backend is under development.

RESTBase systematically emits statsd metrics about storage and backend requests. Specifically, the systematic metric production for backend services provides a good baseline level of instrumentation for tracking performance and errors in a micro-service architecture.

Issue tracking

We use Phabricator to track issues. See the list of current issues in RESTBase.

Installation

Make sure that you have node 6+:

sudo apt-get install nodejs nodejs-legacy nodejs-dev npm

Note: if your distribution does not have a recent version of Node, you can install one via nvm.

From the restbase project directory, install the Node dependencies:

npm install

Start RESTBase:

node server

The defaults without a config file should work for a local Cassandra installation with the default passwords. Restbase has been tested with Cassandra 2.2.6. To customize RESTBase's behaviour, copy the example config to its default location:

cp config.example.yaml config.yaml

You can also pass in the path to another file with the -c commandline option to server.js. If you're running a single Cassandra instance (e.g. a local development environment), set defaultConsistency to one in config.yaml.

Usage

See the Wikimedia REST content API sandbox for a fine example of what RESTBase can do.

Development

Testing

To run all the tests from a clean slate, first make sure Cassandra is running locally, then fire up the tests with npm:

npm test

To run tests from a single file, e.g. test/features/pagecontent/rerendering.js, run mocha with the file as an argument:

mocha test/features/pagecontent/rerendering.js

Note that this might require some setup (e.g. creating the necessary domain and buckets), which is currently done by test/buckets.js.

This also works for a directory, e.g. test/features/pagecontent/:

mocha test/features/pagecontent

Coverage

To check the test coverage, use npm, then browse the report:

npm run-script coverage

The coverage report can now be found in <project>/coverage/lcov-report/index.html.

Design docs

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].