@jweb-development/response-parser
TypeScript icon, indicating that this package has built-in type declarations

1.1.4 • Public • Published

Response Parser

This package comprises a JavaScript library meant for parsing and (optionally) performing actions based on responses received from a RESTful API.

Installation

From your terminal, type the following:

npm i @jweb-development/response-parser

And from there the package should be ready to go!

Use Case

As we handled a growing number of websites that consumed data from REST APIs, we found it burdensome to implement response handling across each codebase. Moreover, we began using Redux for state management across our code; as we received certain statuses (e.g. "Unauthorized") from the API, we found it necessary to immediately dispatch actions to update state for the entire application (e.g. resetting the state and returning the user to a Login component).

This package hopefully accomplishes both of the above tasks; it is meant to simplify and streamline how responses from APIs are handled on the client side, and can also (optionally) be integrated with state management libraries to perform stateful actions.

Example Usage

// import the redux action type
const { GET_ORG_CONTACTS } = require('../redux/types')
// import the npm library
const { parseResponse } = require('@jweb-development/response-parser')
// sample api call triggered by the ui
const processInfo = async (
  dispatch = () => { }, apiInfo, fireSuccess = () => { }, fireFailure = () => { }
) => {
  try {
    const { accountID, options } = apiInfo
    // make the api call using fetch
    const response = await window.fetch(`${api}/accounts/${accountID}/info`, options)
    // get the details of the call from the response object
    const parsedResponse = parseResponse(response)
    // check for errors; if there are none then get the data
    if (parsedResponse && !parsedResponse.error) {
      const { data = {} } = await response.json()

      const { apiInfo = {} } = data

      dispatch({ type: GET_ORG_CONTACTS, payload: apiInfo })

      return true
    } else {
      // here, we know the library/status code is an error code, so we fire an error handler
      fireFailure()
      return false
    }
  } catch (err) {
    console.error(err)
    fireFailure()
    return false
  }
}

Running Locally

To run the package locally, pull from source and run npm run build to output the package into a dist folder. From there, run npm i path-to-local-repo to target the package and install it. Make sure to uninstall the response-parser library first if it has already been downloaded from npm.

Contributing

This package contains the response codes that we use/see the most, but it is by no means exhaustive. While we hope to make this library more robust in the future, we welcome pull requests that amplify what we've written. Before making a PR, consider writing a unit test in the test folder to ensure the code works as expected.

Dependencies (0)

    Dev Dependencies (6)

    Package Sidebar

    Install

    npm i @jweb-development/response-parser

    Weekly Downloads

    7

    Version

    1.1.4

    License

    MIT

    Unpacked Size

    12.7 kB

    Total Files

    11

    Last publish

    Collaborators

    • jworford
    • sekcj