Class JSONAPIAdapter
public| Extends: | RESTAdapter |
|---|---|
| Defined in: | ../packages/adapter/addon/json-api.ts:18 |
| Module: | @ember-data/adapter/json-api |
| Since: | v1.13.0 |
coalesceFindRequests public
| Module: | @ember-data/adapter/json-api |
|---|
Defined in ../packages/adapter/addon/json-api.ts:178
By default the JSONAPIAdapter will send each find request coming from a store.find or from accessing a relationship separately to the server. If your server supports passing ids as a query string, you can set coalesceFindRequests to true to coalesce all find requests within a single runloop.
For example, if you have an initial payload of:
{
data: {
id: 1,
type: 'post',
relationship: {
comments: {
data: [
{ id: 1, type: 'comment' },
{ id: 2, type: 'comment' }
]
}
}
}
} By default calling post.comments will trigger the following requests(assuming the comments haven't been loaded before):
GET /comments/1 GET /comments/2
If you set coalesceFindRequests to true it will instead trigger the following request:
GET /comments?filter[id]=1,2
Setting coalesceFindRequests to true also works for store.find requests and belongsTo relationships accessed within the same runloop. If you set coalesceFindRequests: true
store.findRecord('comment', 1);
store.findRecord('comment', 2); will also send a request to: GET /comments?filter[id]=1,2
Note: Requests coalescing rely on URL building strategy. So if you override buildURL in your app groupRecordsForFindMany more likely should be overridden as well in order for coalescing to work.
coalesceFindRequests public
| Module: | @ember-data/adapter/json-api |
|---|
Inherited from Adapter ../packages/adapter/addon/index.ts:603
By default the store will try to coalesce all findRecord calls within the same runloop into as few requests as possible by calling groupRecordsForFindMany and passing it into a findMany call. You can opt out of this behaviour by either not implementing the findMany hook or by setting coalesceFindRequests to false.
headers public
| Module: | @ember-data/adapter/json-api |
|---|
Inherited from RESTAdapter ../packages/adapter/addon/rest.ts:520
Some APIs require HTTP headers, e.g. to provide an API key. Arbitrary headers can be set as key/value pairs on the RESTAdapter's headers object and Ember Data will send them along with each ajax request. For dynamic headers see headers customization.
app/adapters/application.jsimport RESTAdapter from '@ember-data/adapter/rest';
import { computed } from '@ember/object';
export default class ApplicationAdapter extends RESTAdapter {
headers: computed(function() {
return {
'API_KEY': 'secret key',
'ANOTHER_HEADER': 'Some header value'
};
})
} host public
| Module: | @ember-data/adapter/json-api |
|---|
Inherited from RESTAdapter ../packages/adapter/addon/rest.ts:502
An adapter can target other hosts by setting the host property.
app/adapters/application.jsimport RESTAdapter from '@ember-data/adapter/rest';
export default class ApplicationAdapter extends RESTAdapter {
host = 'https://api.example.com';
} Requests for the Post model would now target https://api.example.com/post/.
namespace public
| Module: | @ember-data/adapter/json-api |
|---|
Inherited from RESTAdapter ../packages/adapter/addon/rest.ts:483
Endpoint paths can be prefixed with a namespace by setting the namespace property on the adapter:
app/adapters/application.jsimport RESTAdapter from '@ember-data/adapter/rest';
export default class ApplicationAdapter extends RESTAdapter {
namespace = 'api/1';
} Requests for the Post model would now target /api/1/post/.
useFetch public
| Module: | @ember-data/adapter/json-api |
|---|
Inherited from RESTAdapter ../packages/adapter/addon/rest.ts:338
This property allows ajax to still be used instead when false.