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) String
private
Parameters:
-
modelName
String
-
id
String
Returns:
-
String
- url
buildURL (modelName, id, snapshot, requestType, query) String
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
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
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
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
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
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
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
Builds a URL for coalesceing multiple store.findRecord(type, id)
records into 1 request when the adapter's
coalesceFindRequests` 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
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
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
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
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) String
private
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