Skip to content

HTTP Methods & Axios

MethodPurposeExample
GETRetrieve data from DBSearch
POSTSend data to server, create a resourceSign up
PUTCreate or replace a resourceUpdate profile
PATCHPartial update of a resourceUpdate password
DELETERemove a resourceDelete account
  • 1xx Informational: 100-Continue, 101-Switching Protocols
  • 2xx Success: 200-OK, 201-Created, 204-No Content
  • 3xx Redirection: 301-Moved Permanently, 304-Not Modified
  • 4xx Client Error: 400-Bad Request, 401-Unauthorized, 403-Forbidden, 404-Not Found
  • 5xx Server Error: 500-Internal Server Error, 502-Bad Gateway, 503-Service Unavailable
  1. fetch() with .then()
  2. async/await syntax
  3. Axios library
  4. Custom hooks
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(data => console.log(data));
const fetchProducts = async function () {
const products = await fetch("https://fakestoreapi.com/products");
const productsJSON = await products.json();
setProducts(productsJSON);
};
Terminal window
npm i axios
import axios from 'axios';
const fetchUsers = async () => {
const url = "https://jsonplaceholder.typicode.com/users";
const response = await axios.get(url);
setUsers(response.data);
};
Axiosfetch()
Built-in XSRF protection
Uses data propertyUses body property (must be stringified)
Automatic JSON transformsTwo-step process
Request timeout & cancellation
HTTP interceptors built-in
Download progress supportNo upload progress
api.js
import axios from 'axios';
const client = axios.create({ baseURL: 'http://jsonplaceholder.typicode.com/' });
export default client;
// Usage
import client from 'api.js';
client.get('/users');
const [response1, response2] = await axios.all([
axios.get('https://api.github.com/users/defunkt'),
axios.get('https://api.github.com/users/evanphx')
]);
HTTP Request -> Interceptor -> Modified Request -> Server
Server -> HTTP Response -> Interceptor -> Modified Response -> Component

Request Interceptor:

axios.interceptors.request.use((req) => {
req.headers.authorization = "my secret token";
return req;
});

Response Interceptor:

axios.interceptors.response.use(
res => res,
err => {
if (err.response.status === 404) {
throw new Error(`${err.config.url} not found`);
}
throw err;
}
);

Remove an Interceptor:

const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);
  1. https://jsonplaceholder.typicode.com/
  2. https://reqres.in/
  3. https://fakestoreapi.com/products
  4. https://api.github.com/users/google
  5. https://dummyjson.com/products
Terminal window
npm install -g json-server
json-server --watch db.json --port=4000

Available routes: GET /employees, POST /employees, PUT /employees/:id, DELETE /employees/:id