Class BuildURLMixin

Defined in: ../adapter/addon/-private/build-url-mixin.js:11
Module: @ember-data/adapter

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

Module: @ember-data/adapter
modelName
String
id
(String|Array|Object)
single id or array of ids or query
snapshot
(Snapshot|SnapshotRecordArray)
single snapshot or array of snapshots
requestType
String
query
Object
object of query parameters to send for query requests.
returns
String
url

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.

pathForType (modelName) String

Module: @ember-data/adapter
modelName
String
returns
String
path

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 RESTAdapter from '@ember-data/adapter/rest';
import { decamelize } from '@ember/string';
import { pluralize } from 'ember-inflector';

export default class ApplicationAdapter extends RESTAdapter {
  pathForType(modelName) {
    var decamelized = decamelize(modelName);
    return pluralize(decamelized);
  }
}

urlForCreateRecord (modelName, snapshot) String

Module: @ember-data/adapter
modelName
String
snapshot
Snapshot
returns
String
url

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

Example:

app/adapters/application.js
import RESTAdapter from '@ember-data/adapter/rest';

export default class ApplicationAdapter extends RESTAdapter {
  urlForCreateRecord(modelName, snapshot) {
    return super.urlForCreateRecord(...arguments) + '/new';
  }
}

urlForDeleteRecord (id, modelName, snapshot) String

Module: @ember-data/adapter
id
String
modelName
String
snapshot
Snapshot
returns
String
url

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

Example:

app/adapters/application.js
import RESTAdapter from '@ember-data/adapter/rest';

export default class ApplicationAdapter extends RESTAdapter {
  urlForDeleteRecord(id, modelName, snapshot) {
    return super.urlForDeleteRecord(...arguments) + '/destroy';
  }
}

urlForFindAll (modelName, snapshot) String

Module: @ember-data/adapter
modelName
String
snapshot
SnapshotRecordArray
returns
String
url

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

Example:

app/adapters/comment.js
import JSONAPIAdapter from '@ember-data/adapter/json-api';

export default class ApplicationAdapter extends JSONAPIAdapter {
  urlForFindAll(modelName, snapshot) {
    let baseUrl = this.buildURL(modelName);
    return `${baseUrl}/data/comments.json`;
  }
}

urlForFindBelongsTo (id, modelName, snapshot) String

Module: @ember-data/adapter
id
String
modelName
String
snapshot
Snapshot
returns
String
url

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

Example:

app/adapters/application.js
import JSONAPIAdapter from '@ember-data/adapter/json-api';

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

urlForFindHasMany (id, modelName, snapshot) String

Module: @ember-data/adapter
id
String
modelName
String
snapshot
Snapshot
returns
String
url

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

Example:

app/adapters/application.js
import JSONAPIAdapter from '@ember-data/adapter/json-api';

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

urlForFindMany (ids, modelName, snapshots) String

Module: @ember-data/adapter
ids
Array
modelName
String
snapshots
Array
returns
String
url

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

Example:

app/adapters/application.js
import RESTAdapter from '@ember-data/adapter/rest';

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

urlForFindRecord (id, modelName, snapshot) String

Module: @ember-data/adapter
id
String
modelName
String
snapshot
Snapshot
returns
String
url

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

Example:

app/adapters/user.js
import JSONAPIAdapter from '@ember-data/adapter/json-api';

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

urlForQuery (query, modelName) String

Module: @ember-data/adapter
query
Object
modelName
String
returns
String
url

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

Example:

app/adapters/application.js
import RESTAdapter from '@ember-data/adapter/rest';

export default class ApplicationAdapter extends RESTAdapter {
  host = 'https://api.github.com';
  urlForQuery (query, modelName) {
    switch(modelName) {
      case 'repo':
        return `https://api.github.com/orgs/${query.orgId}/repos`;
      default:
        return super.urlForQuery(...arguments);
    }
  }
}

urlForQueryRecord (query, modelName) String

Module: @ember-data/adapter
query
Object
modelName
String
returns
String
url

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

Example:

app/adapters/application.js
import RESTAdapter from '@ember-data/adapter/rest';

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

urlForUpdateRecord (id, modelName, snapshot) String

Module: @ember-data/adapter
id
String
modelName
String
snapshot
Snapshot
returns
String
url

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

Example:

app/adapters/application.js
import RESTAdapter from '@ember-data/adapter/rest';

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

© 2020 Yehuda Katz, Tom Dale and Ember.js contributors
Licensed under the MIT License.
https://api.emberjs.com/ember-data/3.25/classes/BuildURLMixin/methods