fetchQuery is a lightweight JavaScript library designed to simplify and optimize HTTP requests. It is ideal for web applications and API integrations, offering asynchronous operations and built-in caching for enhanced performance.
- Asynchronous Operations: Utilizes modern
async/await
syntax for non-blocking HTTP requests. - Caching: Automatically caches GET request responses to reduce network calls and speed up subsequent requests.
- Custom Headers and Body: Supports custom headers and request bodies across all HTTP methods.
- Minimal Dependencies: Designed to be lightweight with minimal external dependencies.
- Intuitive API: Familiar and easy-to-use interface, inspired by popular HTTP clients like Axios.
- Browser Compatible: Works seamlessly across all modern browsers supporting the Fetch API.
Install fetchQuery using your preferred package manager:
npm install fetchquery
import fetchQuery from 'fetchquery'
async function fetchData() {
try {
const data = await fetchQuery.get(
'https://jsonplaceholder.typicode.com/todos/1',
)
console.log(data)
} catch (error) {
console.error('Error fetching data:', error)
}
}
fetchData()
const headers = {
Authorization: 'Bearer your-token',
'Custom-Header': 'value',
}
async function fetchDataWithHeaders() {
try {
const data = await fetchQuery.get(
'https://jsonplaceholder.typicode.com/todos/1',
headers,
)
console.log(data)
} catch (error) {
console.error('Error:', error)
}
}
fetchDataWithHeaders()
const postData = {
title: 'New Todo',
completed: false,
}
const headers = {
Authorization: 'Bearer your-token',
'Content-Type': 'application/json',
}
async function createTodo() {
try {
const data = await fetchQuery.post(
'https://jsonplaceholder.typicode.com/todos',
postData,
headers,
)
console.log(data)
} catch (error) {
console.error('Error:', error)
}
}
createTodo()
fetchQuery automatically caches GET responses to avoid redundant network calls:
async function fetchDataWithCache() {
try {
const data1 = await fetchQuery.get(
'https://jsonplaceholder.typicode.com/todos/1',
)
console.log('First Fetch:', data1)
// This will use the cached data
const data2 = await fetchQuery.get(
'https://jsonplaceholder.typicode.com/todos/1',
)
console.log('From Cache:', data2)
} catch (error) {
console.error('Error:', error)
}
}
fetchDataWithCache()
Modify the default cache expiration time (default is 1 hour):
// Set cache expiration time in milliseconds
fetchQuery.setCacheExpirationTime(30 * 60 * 1000) // 30 minutes
-
get(url, headers)
- Sends a GET request.url
: The request URL.headers
: Optional custom headers.
-
post(url, data, headers)
- Sends a POST request.url
: The request URL.data
: Request body.headers
: Optional custom headers.
-
put(url, data, headers)
- Sends a PUT request. -
patch(url, data, headers)
- Sends a PATCH request. -
delete(url, data, headers)
- Sends a DELETE request.
- Cache Expiration: Default is 1 hour. Configurable via
setCacheExpirationTime()
. - Bypassing Cache: Pass
{ skipCache: true }
to force a new request.
We welcome contributions! To contribute:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/AmazingFeature
). - Commit your changes (
git commit -m 'Add some AmazingFeature'
). - Push to the branch (
git push origin feature/AmazingFeature
). - Open a Pull Request.
Please follow our contributing guidelines and coding standards.
fetchQuery is licensed under the MIT License.
Inspired by the Fetch API and libraries like Axios to deliver a seamless HTTP request experience.