The http service can be used globally Vue.http or in a Vue instance this.$http.
A Vue instance provides the this.$http service which can send HTTP requests. A request method call returns a Promise that resolves to the response. Also the Vue instance will be automatically bound to this in all function callbacks.
{
// GET /someUrl
this.$http.get('/someUrl').then(response => {
// success callback
}, response => {
// error callback
});
}Shortcut methods are available for all request types. These methods work globally or in a Vue instance.
// global Vue object
Vue.http.get('/someUrl', [config]).then(successCallback, errorCallback);
Vue.http.post('/someUrl', [body], [config]).then(successCallback, errorCallback);
// in a Vue instance
this.$http.get('/someUrl', [config]).then(successCallback, errorCallback);
this.$http.post('/someUrl', [body], [config]).then(successCallback, errorCallback);List of shortcut methods:
get(url, [config])head(url, [config])delete(url, [config])jsonp(url, [config])post(url, [body], [config])put(url, [body], [config])patch(url, [body], [config])
| Parameter | Type | Description |
|---|---|---|
| url | string |
URL to which the request is sent |
| body | Object, FormData, string |
Data to be sent as the request body |
| headers | Object |
Headers object to be sent as HTTP request headers |
| params | Object |
Parameters object to be sent as URL parameters |
| method | string |
HTTP method (e.g. GET, POST, ...) |
| responseType | string |
Type of the response body (e.g. text, blob, json, ...) |
| timeout | number |
Request timeout in milliseconds (0 means no timeout) |
| credentials | boolean |
Indicates whether or not cross-site Access-Control requests should be made using credentials |
| emulateHTTP | boolean |
Send PUT, PATCH and DELETE requests with a HTTP POST and set the X-HTTP-Method-Override header |
| emulateJSON | boolean |
Send request body as application/x-www-form-urlencoded content type |
| before | function(request) |
Callback function to modify the request object before it is sent |
| uploadProgress | function(event) |
Callback function to handle the ProgressEvent of uploads |
| downloadProgress | function(event) |
Callback function to handle the ProgressEvent of downloads |
A request resolves to a response object with the following properties and methods:
| Property | Type | Description |
|---|---|---|
| url | string |
Response URL origin |
| body | Object, Blob, string |
Response body |
| headers | Header |
Response Headers object |
| ok | boolean |
HTTP status code between 200 and 299 |
| status | number |
HTTP status code of the response |
| statusText | string |
HTTP status text of the response |
| Method | Type | Description |
| text() | Promise |
Resolves the body as string |
| json() | Promise |
Resolves the body as parsed JSON object |
| blob() | Promise |
Resolves the body as Blob object |
{
// POST /someUrl
this.$http.post('/someUrl', {foo: 'bar'}).then(response => {
// get status
response.status;
// get status text
response.statusText;
// get 'Expires' header
response.headers.get('Expires');
// get body data
this.someData = response.body;
}, response => {
// error callback
});
}Send a get request with URL query parameters and a custom headers.
{
// GET /someUrl?foo=bar
this.$http.get('/someUrl', {params: {foo: 'bar'}, headers: {'X-Custom': '...'}}).then(response => {
// success callback
}, response => {
// error callback
});
}Fetch an image and use the blob() method to extract the image body content from the response.
{
// GET /image.jpg
this.$http.get('/image.jpg', {responseType: 'blob'}).then(response => {
// resolve to Blob
return response.blob();
}).then(blob => {
// use image Blob
});
}Interceptors can be defined globally and are used for pre- and postprocessing of a request. If a request is sent using this.$http or this.$resource the current Vue instance is available as this in a interceptor callback.
Vue.http.interceptors.push(function(request) {
// modify method
request.method = 'POST';
// modify headers
request.headers.set('X-CSRF-TOKEN', 'TOKEN');
request.headers.set('Authorization', 'Bearer TOKEN');
});Vue.http.interceptors.push(function(request) {
// modify request
request.method = 'POST';
// return response callback
return function(response) {
// modify response
response.body = '...';
};
});Vue.http.interceptors.push(function(request) {
// modify request ...
// stop and return response
return request.respondWith(body, {
status: 404,
statusText: 'Not found'
});
});All default interceptors callbacks can be overriden to change their behavior. All interceptors are exposed through the Vue.http.interceptor object with their names before, method, jsonp, json, form, header and cors.
Vue.http.interceptor.before = function(request) {
// override before interceptor
};