DS.BuildURLMixin

DS.BuildURLMixin Class

Defined in: addon/-private/adapters/build-url-mixin.js:5

Module: ember-data

WARNING: This interface is likely to change in order to accomodate https://github.com/emberjs/rfcs/pull/4

Using BuildURLMixin

To use url building, include the mixin when extending an adapter, and call buildURL where needed. The default behaviour is designed for RESTAdapter.

Example

  export default DS.Adapter.extend(BuildURLMixin, {
    findRecord: function(store, type, id, snapshot) {
      var url = this.buildURL(type.modelName, id, snapshot, 'findRecord');
      return this.ajax(url, 'GET');
    }
  });

Attributes

The host and namespace attributes will be used if defined, and are optional.

_buildURL (modelName, id) Stringprivate

Defined in addon/-private/adapters/build-url-mixin.js:81

Parameters:

modelName String
id String

Returns:

String
url

buildURL (modelName, id, snapshot, requestType, query) String

Defined in addon/-private/adapters/build-url-mixin.js:33

Builds a URL for a given type and optional ID.

By default, it pluralizes the type's name (for example, 'post' becomes 'posts' and 'person' becomes 'people'). To override the pluralization see pathForType.

If an ID is specified, it adds the ID to the path generated for the type, separated by a /.

When called by RESTAdapter.findMany() the id and snapshot parameters will be arrays of ids and snapshots.

Parameters:

modelName String
id (String|Array|Object)
single id or array of ids or query
snapshot (DS.Snapshot|Array)
single snapshot or array of snapshots
requestType String
query Object
object of query parameters to send for query requests.

Returns:

String
url

pathForType (modelName) String

Defined in addon/-private/adapters/build-url-mixin.js:410

Determines the pathname for a given type.

By default, it pluralizes the type's name (for example, 'post' becomes 'posts' and 'person' becomes 'people').

Pathname customization

For example if you have an object LineItem with an endpoint of "/line_items/".

app/adapters/application.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  pathForType: function(modelName) {
    var decamelized = Ember.String.decamelize(modelName);
    return Ember.String.pluralize(decamelized);
  }
});

Parameters:

modelName String

Returns:

String
path

urlForCreateRecord (modelName, snapshot) String

Defined in addon/-private/adapters/build-url-mixin.js:298

Builds a URL for a record.save() call when the record was created locally using store.createRecord().

Example:

app/adapters/application.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  urlForCreateRecord(modelName, snapshot) {
    return this._super(...arguments) + '/new';
  }
});

Parameters:

modelName String
snapshot DS.Snapshot

Returns:

String
url

urlForDeleteRecord (id, modelName, snapshot) String

Defined in addon/-private/adapters/build-url-mixin.js:348

Builds a URL for a record.save() call when the record has been deleted locally.

Example:

app/adapters/application.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  urlForDeleteRecord(id, modelName, snapshot) {
    return this._super(...arguments) + '/destroy';
  }
});

Parameters:

id String
modelName String
snapshot DS.Snapshot

Returns:

String
url

urlForFindAll (modelName, snapshot) String

Defined in addon/-private/adapters/build-url-mixin.js:137

Builds a URL for a store.findAll(type) call.

Example:

app/adapters/comment.js
import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({
  urlForFindAll(modelName, snapshot) {
    return 'data/comments.json';
  }
});

Parameters:

modelName String
snapshot DS.SnapshotRecordArray

Returns:

String
url

urlForFindBelongsTo (id, modelName, snapshot) String

Defined in addon/-private/adapters/build-url-mixin.js:271

Builds a URL for fetching a async belongsTo relationship when a url is not provided by the server.

Example:

app/adapters/application.js
import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({
  urlForFindBelongsTo(id, modelName, snapshot) {
    let baseUrl = this.buildURL(id, modelName);
    return `${baseUrl}/relationships`;
  }
});

Parameters:

id String
modelName String
snapshot DS.Snapshot

Returns:

String
url

urlForFindHasMany (id, modelName, snapshot) String

Defined in addon/-private/adapters/build-url-mixin.js:244

Builds a URL for fetching a async hasMany relationship when a url is not provided by the server.

Example:

app/adapters/application.js
import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({
  urlForFindHasMany(id, modelName, snapshot) {
    let baseUrl = this.buildURL(id, modelName);
    return `${baseUrl}/relationships`;
  }
});

Parameters:

id String
modelName String
snapshot DS.Snapshot

Returns:

String
url

urlForFindMany (ids, modelName, snapshots) String

Defined in addon/-private/adapters/build-url-mixin.js:216

Builds a URL for coalesceing multiple store.findRecord(type, id) records into 1 request when the adapter'scoalesceFindRequests` property is true.

Example:

app/adapters/application.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  urlForFindMany(ids, modelName) {
    let baseUrl = this.buildURL();
    return `${baseUrl}/coalesce`;
  }
});

Parameters:

ids Array
modelName String
snapshots Array

Returns:

String
url

urlForFindRecord (id, modelName, snapshot) String

Defined in addon/-private/adapters/build-url-mixin.js:110

Builds a URL for a store.findRecord(type, id) call.

Example:

app/adapters/user.js
import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({
  urlForFindRecord(id, modelName, snapshot) {
    let baseUrl = this.buildURL();
    return `${baseUrl}/users/${snapshot.adapterOptions.user_id}/playlists/${id}`;
  }
});

Parameters:

id String
modelName String
snapshot DS.Snapshot

Returns:

String
url

urlForQuery (query, modelName) String

Defined in addon/-private/adapters/build-url-mixin.js:161

Builds a URL for a store.query(type, query) call.

Example:

app/adapters/application.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  host: 'https://api.github.com',
  urlForQuery (query, modelName) {
    switch(modelName) {
      case 'repo':
        return `https://api.github.com/orgs/${query.orgId}/repos`;
      default:
        return this._super(...arguments);
    }
  }
});

Parameters:

query Object
modelName String

Returns:

String
url

urlForQueryRecord (query, modelName) String

Defined in addon/-private/adapters/build-url-mixin.js:191

Builds a URL for a store.queryRecord(type, query) call.

Example:

app/adapters/application.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  urlForQueryRecord({ slug }, modelName) {
    let baseUrl = this.buildURL();
    return `${baseUrl}/${encodeURIComponent(slug)}`;
  }
});

Parameters:

query Object
modelName String

Returns:

String
url

urlForUpdateRecord (id, modelName, snapshot) String

Defined in addon/-private/adapters/build-url-mixin.js:323

Builds a URL for a record.save() call when the record has been update locally.

Example:

app/adapters/application.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  urlForUpdateRecord(id, modelName, snapshot) {
    return `/${id}/feed?access_token=${snapshot.adapterOptions.token}`;
  }
});

Parameters:

id String
modelName String
snapshot DS.Snapshot

Returns:

String
url

urlPrefix (path, parentURL) Stringprivate

Defined in addon/-private/adapters/build-url-mixin.js:373

Parameters:

path String
parentURL String

Returns:

String
urlPrefix

© 2017 Yehuda Katz, Tom Dale and Ember.js contributors
Licensed under the MIT License.
https://emberjs.com/api/data/classes/DS.BuildURLMixin.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部