A lightweight HTTP client wrapper built on Axios with automatic error logging support.
- 🚀 Built on Axios for reliable HTTP requests
- 📝 Automatic error logging with @morphsync/logger
- đź”§ Support for custom headers
- 📦 JSON content-type by default
- ⚡ Promise-based API
- 🎯 TypeScript-friendly
npm install @morphsync/http-requestnpm install @morphsync/loggerconst HttpRequest = require('@morphsync/http-request');
const api = new HttpRequest('https://api.example.com');
// GET request
const users = await api.getRequest('/users');
// POST request
const newUser = await api.postRequest('/users', {
name: 'John Doe',
email: 'john@example.com'
});
// PUT request
const updated = await api.putRequest('/users/1', {
name: 'Jane Doe'
});
// DELETE request
const deleted = await api.deleteRequest('/users/1');const HttpRequest = require('@morphsync/http-request');
const httpRequest = new HttpRequest(process.env.API_URL);
try {
const response = await httpRequest.getRequest('/endpoint');
console.log(response);
} catch (error) {
console.error('Request failed:', error.message);
}const httpRequest = new HttpRequest('https://api.example.com');
// GET with authentication
const data = await httpRequest.getRequest('/protected', {
'Authorization': 'Bearer your-token-here'
});
// POST with custom headers
const result = await httpRequest.postRequest(
'/data',
{ key: 'value' },
{
'Authorization': 'Bearer your-token-here',
'X-Custom-Header': 'custom-value'
}
);When @morphsync/logger is installed, errors are automatically logged to files:
const HttpRequest = require('@morphsync/http-request');
// @morphsync/logger is automatically detected if installed
const httpRequest = new HttpRequest('https://api.example.com');
try {
const data = await httpRequest.getRequest('/users');
} catch (error) {
// Error is automatically logged to: log/YYYY/MM/DD/request/error.log
console.error('Request failed:', error.message);
}const HttpRequest = require('@morphsync/http-request');
const Logger = require('@morphsync/logger');
class UserController {
static async getUsers(req, res) {
const logger = new Logger();
const api = new HttpRequest(process.env.API_URL);
try {
const users = await api.getRequest('/users');
logger.write('Users fetched successfully', 'api/info');
res.json({ success: true, data: users });
} catch (error) {
logger.write(`Error fetching users: ${error.message}`, 'api/error');
res.status(500).json({ success: false, error: 'Failed to fetch users' });
}
}
}
module.exports = UserController;const HttpRequest = require('@morphsync/http-request');
// Different API endpoints
const userApi = new HttpRequest('https://users-api.example.com');
const paymentApi = new HttpRequest('https://payments-api.example.com');
const analyticsApi = new HttpRequest('https://analytics-api.example.com');
// Use independently
const users = await userApi.getRequest('/users');
const payments = await paymentApi.getRequest('/transactions');
const stats = await analyticsApi.getRequest('/stats');Creates a new HTTP client instance.
Parameters:
baseURL(string): The base URL for all HTTP requests
Example:
const api = new HttpRequest('https://api.example.com');Sends a GET request.
Parameters:
endpoint(string): API endpoint pathheaders(object, optional): Custom headers
Returns: Promise
Example:
const data = await api.getRequest('/users', {
'Authorization': 'Bearer token'
});Sends a POST request.
Parameters:
endpoint(string): API endpoint pathdata(object): Request body dataheaders(object, optional): Custom headers
Returns: Promise
Example:
const result = await api.postRequest('/users', {
name: 'John',
email: 'john@example.com'
});Sends a PUT request.
Parameters:
endpoint(string): API endpoint pathdata(object): Request body dataheaders(object, optional): Custom headers
Returns: Promise
Example:
const updated = await api.putRequest('/users/1', {
name: 'Jane'
});Sends a DELETE request.
Parameters:
endpoint(string): API endpoint pathheaders(object, optional): Custom headers
Returns: Promise
Example:
const deleted = await api.deleteRequest('/users/1');All methods throw errors that can be caught with try-catch:
try {
const data = await api.getRequest('/endpoint');
} catch (error) {
if (error.response) {
// Server responded with error status
console.error('Status:', error.response.status);
console.error('Data:', error.response.data);
} else if (error.request) {
// Request made but no response
console.error('No response received');
} else {
// Error setting up request
console.error('Error:', error.message);
}
}- axios - Promise based HTTP client
- @morphsync/logger - For automatic error logging
ISC
Morphsync
- @morphsync/logger - Logger utility with automatic file organization
For issues and questions, please visit the GitHub repository.