React~Axios - rohit120582sharma/Documentation GitHub Wiki
Axios is promise-based and thus we can take advantage of async and await for more readable asynchronous code. We can also intercept and cancel requests, and there’s built-in client side protection against cross site request forgery.
npm install --save axiosaxios(config)
// GET request for remote image
axios({
	method:'get',
	url:'http://bit.ly/2mTM3nY',
	responseType:'stream'
})
.then(function(response) {
	response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
});axios.request(config)
axios.get(url[, config])
axios.post(url[, data[, config]])
axios.delete(url[, config])
Axios allows us to create a new instance in which we can define a URL and any other configuration elements.
import axios from 'axios';
// Set config defaults when creating the instance
var instance = axios.create({
	baseURL: 'http://jsonplaceholder.typicode.com/',
	headers: {'X-Custom-Header': 'foobar'}
});Global defaults
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';Custom instance defaults
// Set config defaults when creating the instance
var instance = axios.create({
	baseURL: 'https://api.example.com'
});
// Alter defaults after instance has been created
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;Request Config
{
	// `url` is the server URL that will be used for the request
	url: '/user',
	// `method` is the request method to be used when making the request
	method: 'get', // default
	// `baseURL` will be prepended to `url` unless `url` is absolute
	baseURL: 'https://some-domain.com/api/',
	// `headers` are custom headers to be sent
	headers: {'X-Requested-With': 'XMLHttpRequest'},
	// `params` are the URL parameters to be sent with the request
	// Must be a plain object or a URLSearchParams object
	params: {
		ID: 12345
	},
	// `data` is the data to be sent as the request body
	// Only applicable for request methods 'PUT', 'POST', and 'PATCH'
	data: {
		firstName: 'Fred'
	},
	// `responseType` indicates the type of data that the server will respond with
	// options are 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'
	responseType: 'json', // default
}You can intercept requests or responses before they are handled by then or catch.
// Add a request interceptor
var requestInterceptor = axios.interceptors.request.use(
	function(config){
		// Do something before request is sent
		return config;
	},
	function(error){
		// Do something with request error
		return Promise.reject(error);
	}
);
// Add a response interceptor
var responseInterceptor = axios.interceptors.response.use(
	function(response){
		// Do something with response data
		return response;
	},
	function(error){
		// Do something with response error
		return Promise.reject(error);
	}
);If you may need to remove an interceptor later you can.
axios.interceptors.request.eject(responseInterceptor);You can add interceptors to a custom instance of axios.
var instance = axios.create();
instance.interceptors.request.use(function () {/*...*/});We can make working with promises even simpler with async and await. The await keyword resolves the promise and returns the value which we can assign to a variable.
handleSubmit = async event => {
	event.preventDefault();
	// Promise is resolved and value is inside of the response const.
	const response = await API.delete(`users/${this.state.id}`);
	console.log(response);
	console.log(response.data);
};