@bakerwebsolutions/hermes
TypeScript icon, indicating that this package has built-in type declarations

1.0.7 • Public • Published

Hermes v1.0.5

Node.js CI

Lightweight fetch wrapper built with typescript.

Node v17.5.0+ is recommended as this module uses fetch. If you are using < v18.0 you must use --experimental-fetch.

If you are using a Node version below v17.5.0+ Check the Using Options example for how to use a custom fetch which will allow you to use older versions of Node.

Installation

npm install @bakerwebsolutions/hermes

Examples

Get Request

import hermes from '@bakerwebsolutions/hermes'

const getRequestResponse = hermes.get('https://reqres.in/api/users?page=2)

console.log(getRequestResponse)

Post Request

import hermes from '@bakerwebsolutions/hermes'

const postRequestResponse = hermes.post('https://reqres.in/api/users', {
    data: {
        name: 'John',
        job: 'driver'
    }
})

console.log(postRequestResponse)

Using Options

import hermes from '@bakerwebsolutions/hermes'
import fetch from 'node-fetch'

const data = {
    name: 'John',
    job: 'driver'
}
const options = {
    headers: 'Content-Type': 'application/json', // Default Content-Type header is application/json
    fetch
}
const postRequestResponse = hermes.post('https://reqres.in/api/users', options, {data})

Global Configuration

To set options like headers or fetch globally you can create a file and import the Hermes class

import { Hermes } from '@bakerwebsolutions/hermes'

const options = {
  headers: [{ name: 'Content-Type', value: 'application/json' }, { name: 'Authorization', value: 'token'}]
}

const hermes = new Hermes(options)

export default hermes

Then use your custom hermes configuration just replace the path.

import hermes from '<path/to/custom/hermes>'

const getUsersResponse = hermes.get('https://reqres.in/api/users')

console.log(getUsersResponse)

Using With Typescript

Global Headers Configuration

import { Hermes, type Options } from '@bakerwebsolutions/hermes'

const options: Options = {
  headers: [
    { name: 'Content-Type', value: 'application/json' },
    { name: 'Authorization', value: 'token'}
  ]
}

const hermes = new Hermes(options)

export default hermes

Get Request

import hermes from '@bakerwebsolutions/hermes'
import type { GetUserResponse } from './types';

hermes.get<GetUserResponse>('https://reqres.in/api/users')

Post Request

import hermes from '@bakerwebsolutions/hermes'

type Data = {
  name: string;
  job: string;
};

const data = {
    name: 'mobius',
    job: 'secret',
};

const postResponse = await hermes.post<CreateUserResponse, Data>('https://reqres.in/api/users', { data });

console.log(postResponse)

Development

Clone the repository

git clone https://github.com/bakerweb/hermes.git

Install dependencies

npm install

Run Tests

npm run test

Package Sidebar

Install

npm i @bakerwebsolutions/hermes

Weekly Downloads

4

Version

1.0.7

License

BSD 3-Clause

Unpacked Size

19.7 kB

Total Files

5

Last publish

Collaborators

  • dallan-baker