Class JSONAPIAdapter
publicOverview
⚠️ This is LEGACY documentation for a feature that is no longer encouraged to be used. If starting a new app or thinking of implementing a new adapter, consider writing a Handler instead to be used with the RequestManager
The JSONAPIAdapter
is an adapter whichtransforms the store's
requests into HTTP requests that follow the JSON API format.
JSON API Conventions
The JSONAPIAdapter uses JSON API conventions for building the URL for a record and selecting the HTTP verb to use with a request. The actions you can take on a record map onto the following URLs in the JSON API adapter:
Action | HTTP Verb | URL |
---|---|---|
`store.findRecord('post', 123)` | GET | /posts/123 |
`store.findAll('post')` | GET | /posts |
Update `postRecord.save()` | PATCH | /posts/123 |
Create `store.createRecord('post').save()` | POST | /posts |
Delete `postRecord.destroyRecord()` | DELETE | /posts/123 |
Success and failure
The JSONAPIAdapter will consider a success any response with a status code of the 2xx family ("Success"), as well as 304 ("Not Modified"). Any other status code will be considered a failure.
On success, the request promise will be resolved with the full response payload.
Failed responses with status code 422 ("Unprocessable Entity") will
be considered "invalid". The response will be discarded, except for
the errors
key. The request promise will be rejected with a
InvalidError
. This error object will encapsulate the saved
errors
value.
Any other status codes will be treated as an adapter error. The
request promise will be rejected, similarly to the invalid case,
but with an instance of AdapterError
instead.
Endpoint path customization
Endpoint paths can be prefixed with a namespace
by setting the
namespace property on the adapter:
import JSONAPIAdapter from '@ember-data/adapter/json-api';
export default class ApplicationAdapter extends JSONAPIAdapter {
namespace = 'api/1';
}
Requests for the person
model would now target /api/1/people/1
.
Host customization
An adapter can target other hosts by setting the host
property.
import JSONAPIAdapter from '@ember-data/adapter/json-api';
export default class ApplicationAdapter extends JSONAPIAdapter {
host = 'https://api.example.com';
}
Requests for the person
model would now target
https://api.example.com/people/1
.
Methods
- buildQuery
- buildURL
- createRecord
- deleteRecord
- findAll
- findBelongsTo
- findHasMany
- findMany
- findRecord
- generateIdForRecord
- groupRecordsForFindMany
- handleResponse
- isInvalid
- isSuccess
- pathForType
- query
- queryRecord
- serialize
- shouldBackgroundReloadAll
- shouldBackgroundReloadRecord
- shouldReloadAll
- shouldReloadRecord
- sortQueryParams
- updateRecord
- urlForCreateRecord
- urlForDeleteRecord
- urlForFindAll
- urlForFindBelongsTo
- urlForFindHasMany
- urlForFindMany
- urlForFindRecord
- urlForQuery
- urlForQueryRecord
- urlForUpdateRecord
Properties
Events
No documented items