RESTHEART

REST API for MongoDB

For developers with deadlines

What it does

RESTHeart leverages MongoDB to provide all data functionalities required by modern applications.

  • Full REST API with JSON.
  • Queries, aggregations, streams and transactions.
  • Authentication and role-based Authorization.
LEARN MORE

What it is

RESTHeart is a backend for Web and Mobile apps, designed to radically simplify server-side development and deployment.

  • Ready-to-run stateless Microservice.
  • Distributable as a Docker container.
  • Easily deployable both on Cloud and on-premises.
DOWNLOAD

REST microservice for MongoDB Ready-to-use, no server-side coding Supports all features of MongoDB Data API for Mobile Apps Develop REST Web Services Publish Content to the Web Handle users and permissions Available as binary package and Docker image Put data access under control Stream real-time data with WebSockets Integrate with MongoDB Notify clients with Hooks Create Open Data solutions Threat protection at every layer

Query documents from the command line with httpie.

The GET request has two query parameters: filter to apply a query and pagesize to limit the response to two documents.
Here we use the brilliant httpie, a modern command line HTTP client.

More examples
$ http GET https://beta.mrest.io/demo/messages?filter='{"from":"Bob"}'\&pagesize=2 key:demo

HTTP/1.1 200 OK
# other response headers omitted

[
    {
        "_id": {
            "$oid": "5c50963e477870eb8258fa68"
        }, 
        "from": "Bob", 
        "message": "was here", 
        "timestamp": {
            "$date": 1548785214114
        }
    }, 
    {
        "_id": {
            "$oid": "5c50962f477870eb8258fa54"
        }, 
        "from": "Bob", 
        "message": "RESTHeart rocks", 
        "timestamp": {
            "$date": 1548785199983
        }
    }
]

Query documents from the command line with cURL.

The GET request has two query parameters: filter to apply a query (that needs to be encoded with --data-urlencode option since it contains the curly brackets) and pagesize to limit the response to two documents.
Here we use the immortal cURL!

More examples
    
$ curl --header "key:demo" -G --data-urlencode 'filter={"from":"Bob"}' https://beta.mrest.io/demo/messages?pagesize=2

[
    {
        "_id": {
            "$oid": "5c50963e477870eb8258fa68"
        }, 
        "from": "Bob", 
        "message": "was here", 
        "timestamp": {
            "$date": 1548785214114
        }
    }, 
    {
        "_id": {
            "$oid": "5c50962f477870eb8258fa54"
        }, 
        "from": "Bob", 
        "message": "RESTHeart rocks", 
        "timestamp": {
            "$date": 1548785199983
        }
    }
]

Query documents with JavaScript.

The GET request has two query parameters: filter to apply a query and pagesize to limit the response to two documents.
Here we use the fetch API.

Run it
const url = encodeURI('https://beta.mrest.io/demo/messages?filter={"from":"Bob"}&pagesize=2');

fetch(url, { headers: {'key':'demo'} })
  .then(response => response.json())
  .then(json => JSON.stringify(json, null, 2))
  .then(data => document.getElementById('app').innerHTML = data);

Query documents with Java.

The GET request has two query parameters: filter to apply a query and pagesize to limit the response to two documents.
Here we use the unirest java http library.

More examples
public void printOutMessages() throws UnirestException {
    HttpResponse<JsonNode> resp = Unirest.get("https://beta.mrest.io/demo/messages")
            .header("key", "demo")
            .queryString("filter", "{\"from\":\"Bob\"}")
            .queryString("pagesize", "2")
            .asJson();

    // get body as JSON array 
    JSONArray messages = resp.getBody().getArray();

    // print out each message
    messages.forEach(message -> System.out.println(message.toString()));
}

Query documents with Swift.

The GET request has two query parameters: filter to appy a query and pagesize to limit the response to two documents.
Here we use the JSONSerialization to parse the response body.

More examples
import UIKit
import PlaygroundSupport

var urlComponents = URLComponents(string: "https://beta.mrest.io/demo/messages")

// set the query parameters
var queryItems = [URLQueryItem]()
queryItems.append(URLQueryItem(name: "pagesize", value: "2"))
queryItems.append(URLQueryItem(name: "filter", value: "{\"from\":\"Bob\"}"))
urlComponents?.queryItems = queryItems

var urlRequest = URLRequest(url: (urlComponents?.url)!)

// set the key request header
urlRequest.setValue("demo", forHTTPHeaderField: "key")

// set request method
urlRequest.httpMethod = "GET"

URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
    guard let dataResponse = data, error == nil
    else {
        print(error?.localizedDescription ?? "Response Error")
        return
    }
    
    do {
        let jsonResponse = try JSONSerialization.jsonObject(with: dataResponse, options: [])
        print(jsonResponse)
    } catch let jsonError {
        print(jsonError)
    }
}.resume()

// only needed in playground
PlaygroundPage.current.needsIndefiniteExecution = true

Examples use mrest.io cloud service for RESTHeart that requires the api key.

Trusted by Startups and Corporations

Widely Adopted

RESTHeart Docker daily image's pulls