LoopBack remote REST API connector
Go to file
Miroslav Bajtoš fafc0e36f3
3.2.0
* Add support for configuring remoting options (Kenny Sabir)
 * chore:update license (Diana Lau)
 * Move remote connector doc into README (crandmck)
 * build: enable Travis CI (Miroslav Bajtoš)
 * Add stalebot configuration (Kevin Delisle)
 * Update Issue and PR Templates (#76) (Sakib Hasan)
 * Add CODEOWNER file (Diana Lau)
 * Replicate new issue_template from loopback (Siddhi Pai)
 * Replicate issue_template from loopback repo (Siddhi Pai)
 * Add "options" arg to stubbed models in tests (Miroslav Bajtoš)
2017-12-05 14:43:32 +01:00
.github Add stalebot configuration 2017-08-22 13:14:17 -04:00
lib Add support for configuring remoting options 2017-12-05 14:22:10 +01:00
test Add support for configuring remoting options 2017-12-05 14:22:10 +01:00
.editorconfig Move remote connector from loopback 2014-09-25 14:20:22 -07:00
.eslintrc Move remote connector from loopback 2014-09-25 14:20:22 -07:00
.gitignore Move remote connector from loopback 2014-09-25 14:20:22 -07:00
.jshintignore Move remote connector from loopback 2014-09-25 14:20:22 -07:00
.jshintrc Clean up tests 2016-01-07 20:08:05 -08:00
.npmignore Update dev-dependencies 2016-09-01 13:29:59 +02:00
.travis.yml build: enable Travis CI 2017-10-17 14:25:32 +02:00
CHANGES.md 3.2.0 2017-12-05 14:43:32 +01:00
CODEOWNERS Add CODEOWNER file 2017-07-24 19:47:21 -04:00
CONTRIBUTING.md Update URLs in CONTRIBUTING.md (#50) 2016-07-13 17:33:12 -07:00
Gruntfile.js Do not use native promises in tests 2016-05-19 18:04:23 -07:00
LICENSE chore:update license 2017-11-09 13:33:09 -05:00
README.md Move remote connector doc into README 2017-11-07 14:25:19 -08:00
index.js update copyright notices and license 2016-05-06 12:02:21 -07:00
package.json 3.2.0 2017-12-05 14:43:32 +01:00

README.md

loopback-connector-remote

The remote connector enables you to use a LoopBack application as a data source via REST. You can use the remote connector with a LoopBack application, a Node application, or a browser-based application that uses LoopBack in the client. The connector uses Strong Remoting.

In general, using the remote connector is more convenient than calling into REST API, and enables you to switch the transport later if you need to.

Use loopback-connector-remote:

  • Version 3.x with LoopBack v3 and later.
  • Prior versions with LoopBack v2.

Installation

In your application root directory, enter:

$ npm install loopback-connector-remote --save

This will install the module and add it as a dependency to the application's package.json file.

Creating a remote data source

Create a new remote data source with the datasource generator:

$ lb datasource

When prompted:

  • For connector, scroll down and select other.
  • For connector name without the loopback-connector- prefix, enter remote.

This creates an entry in datasources.json; Then you need to edit this to add the data source properties, for example:

{% include code-caption.html content="/server/datasources.json" %}

...
 "myRemoteDataSource": {
    "name": "myRemoteDataSource",
    "connector": "remote",
    "url": "http://localhost:3000/api"
  }
 ...

The url property specifies the root URL of the LoopBack API. If you do not specify a url property, the remote connector will point to it's own host name, port it's running on, etc.

The connector will generate models on the myRemoteDataSource datasource object based on the models/methods exposed from the remote service. Those models will have methods attached that are from the model's remote methods. So if the model foo exposes a remote method called bar, the connector will automatically generate the following:

app.datasources.myRemoteDataSource.models.foo.bar()

Access it in any model file

To access the remote Loopback service in a model:

module.exports = function(Message) {

  Message.test = function (cb) {
    Message.app.datasources.myRemoteDataSource.models.
      SomeModel.remoteMethodNameHere(function () {});

    cb(null, {});
  };

};

Remote data source properties

Property Type Description
host String Hostname of LoopBack application providing remote data source.
port Number Port number of LoopBack application providing remote data source.
root String Path to API root of LoopBack application providing remote data source.
url String Full URL of LoopBack application providing remote connector. Use instead of host, port, and root properties.

Configuring authentication

The remote connector does not support JSON-based configuration of the authentication credentials (see issue #3). You can use the following code as a workaround. It assumes that your data source is called "remote" and the AccessToken id is provided in the variable "token".

app.dataSources.remote.connector.remotes.auth = {
  bearer: new Buffer(token).toString('base64'),
  sendImmediately: true
};

Using with MongoDB connector

When using the MongoDB connector on the server and a remote connector on the client, use the following id property:

"id": {
  "type": "string",
  "generated": true,
  "id": true
}