@halo-dev/rest-api-client

Halo REST API client for JavaScript

Usage no npm install needed!

<script type="module">
  import haloDevRestApiClient from 'https://cdn.skypack.dev/@halo-dev/rest-api-client';
</script>

README

Halo Rest API Client

npm version npm node-current NPM

HTTP Client for Halo RESTful API.

Installation

npm install @halo-dev/rest-api-client

use require or import to import the library.

// CommonJS
const { HaloRestAPIClient } = require('@halo-dev/rest-api-client')

// ES modules
import { HaloRestAPIClient } from '@halo-dev/rest-api-client'

Usage

const client = new HaloRestAPIClient({
  baseUrl: 'https://example.halo.run',
})

The auth parameter supports the following ways:

  1. Use API token authentication
auth: {
  apiToken: process.env.HALO_API_TOKEN
}
  1. Use Admin token authentication
auth: {
  adminToken: process.env.HALO_ADMIN_TOKEN
}
  1. Use custom header auth
auth: {
  type: "customizeAuth",
    authHeader
:
  "Admin-Authorization",
    getToken()
  {
    return localStorage.getItem("Access_Token")
  }
}
  1. Use OAuth token authentication
auth: {
  oAuthToken: process.env.HALO_OAUTH_TOKEN
}

Basic Auth

const client = new HaloRestAPIClient({
  baseUrl: 'https://example.halo.run',
  // Use basic authentication
  basicAuth: { username: 'user', password: 'password' },
})

In addition to this, it also supports automatic authentication of Token Provider:

import {
  HaloRestAPIClient,
  LocalStorageTokenStore,
  // FileTokenStore,
  // TokenStore,
  DefaultTokenProvider,
} from '@halo-dev/rest-clint-api'

// Use LocalStorageTokenStore to persistence AccessToken to localStorage(in browser only)
// you can use FileTokenStore if in the Node environment.
// If there is no suitable Token store implemention, you can implement your own token storage strategy through the TokenStore interface.
const localStorageTokenStore = new LocalStorageTokenStore()

// halo api base url.
const baseUrl = process.env.VUE_APP_BASE_URL

const haloRestApiClient = new HaloRestAPIClient({
  baseUrl: baseUrl,
})

const buildTokenProvider = (credentials) => {
  return new DefaultTokenProvider(
    {
      ...credentials,
    },
    baseUrl,
    localStorageTokenStore,
  )
}

const tokenProvider = buildTokenProvider({
  username: 'your halo username',
  password: 'your password',
})
haloRestApiClient.setTokenProvider(tokenProvider)
// now you can use haloRestApiClient to build your api client

Http Request

const haloRestApiClient = new HaloRestAPIClient({
  baseUrl: 'https://example.halo.run',
  basicAuth: { username: 'user', password: 'password' },
})
// build http client to perform http request
const client = haloRestApiClient.buildHttpClient()

// api parameters
const parameters = {}
// http get
client.get('https://example.halo.run', parameters)
// http post
client.post('https://example.halo.run', parameters)

License

MIT license