fetchquery
v1.0.7
Published
Lightweight JavaScript library for simplified HTTP requests with built-in caching and async support.
Downloads
25
Maintainers
Readme
fetchQuery
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.
Key Features
- Asynchronous Operations: Utilizes modern
async/awaitsyntax 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.
Installation
Install fetchQuery using your preferred package manager:
npm install fetchqueryUsage
Basic Asynchronous GET Request
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()GET Request with Custom Headers
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()POST Request with Body and Headers
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()Caching GET Requests
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()Custom Cache Expiration
Modify the default cache expiration time (default is 1 hour):
// Set cache expiration time in milliseconds
fetchQuery.setCacheExpirationTime(30 * 60 * 1000) // 30 minutesAPI Reference
Methods
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 Configuration
- Cache Expiration: Default is 1 hour. Configurable via
setCacheExpirationTime(). - Bypassing Cache: Pass
{ skipCache: true }to force a new request.
Contributing
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.
License
fetchQuery is licensed under the MIT License.
Credits
Inspired by the Fetch API and libraries like Axios to deliver a seamless HTTP request experience.
