Package @ember-data/adapter/error
A AdapterError
is used by an adapter to signal that an error occurred
during a request to an external API. It indicates a generic error, and
subclasses are used to indicate specific error states. The following
subclasses are provided:
InvalidError
TimeoutError
AbortError
UnauthorizedError
ForbiddenError
NotFoundError
ConflictError
ServerError
To create a custom error to signal a specific error state in communicating
with an external API, extend the AdapterError
. For example, if the
external API exclusively used HTTP 503 Service Unavailable
to indicate
it was closed for maintenance:
error.js | |
1 2 3 |
import AdapterError from '@ember-data/adapter/error'; export default AdapterError.extend({ message: "Down for maintenance." }); |
This error would then be returned by an adapter's handleResponse
method:
app/adapters/application.js | |
1 2 3 4 5 6 7 8 9 10 11 12 |
import JSONAPIAdapter from ' -data/adapter/json-api'; import MaintenanceError from './maintenance-error'; export default class ApplicationAdapter extends JSONAPIAdapter { handleResponse(status) { if (503 === status) { return new MaintenanceError(); } return super.handleResponse(...arguments); } } |
And can then be detected in an application and used to send the user to an
under-maintenance
route:
app/routes/application.js | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import Route from ' /routing/route'; import MaintenanceError from '../adapters/maintenance-error'; export default class ApplicationRoute extends Route { actions: { error(error, transition) { if (error instanceof MaintenanceError) { this.transitionTo('under-maintenance'); return; } // ...other error handling logic } } } |